MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Nazwy pól dokumentu nie mogą zaczynać się od „$” (zły klucz:„$set”)

Nie powinieneś mieć { "orgId" : 2 } w dokumencie aktualizacji.

Usuń ten wiersz z kodu i powinien działać poprawnie.

u.append("orgId", orgId);

Powodem, dla którego wywołałeś błąd, było to, że istnieją dwa sposoby określenia aktualizacji dla dokumentu i utworzyłeś chleb krzyżowy obu. Dostępne opcje to:

  1. Dostarcz kompletny dokument do aktualizacji. W przypadku tego modelu istniejący dokument jest nadpisywany przez dostarczony dokument.
  2. Używa operatorów aktualizacji do modyfikowania istniejącego dokumentu w kolekcji.

Jeśli używasz drugiej wersji, wszystkie „klucze najwyższego poziomu” w dokumencie aktualizacji będą zaczynały się od $ . Jeśli użyjesz pierwszej opcji, żaden z klawiszy najwyższego poziomu nie będzie zaczynał się od $ . Kod spojrzał na pierwsze pole, pomyślał, że jest to dokument zastępczy, a następnie nie powiódł się, gdy próbował sprawdzić poprawność reszty dokumentu, ponieważ klucze w dokumentach nie mogą zaczynać się od $ (aby nie pomylić z dokumentami aktualizacji lub zapytań).

Edycja:

W przypadku upsert (np. dokument jeszcze nie istnieje i oznaczysz aktualizację, aby zezwolić na upsert), operatory dokładnego dopasowania zapytania są używane do wprowadzania dokumentu. W powyższym przykładzie otrzymujemy dokument źródłowy { "orgId" : 2 } . Serwer zastosuje następnie operatory aktualizacji i zapisze wynik.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wybierz zagnieżdżone pola w mongo db

  2. Pomóż zdefiniować niesamowite narzędzie MongoDB GUI

  3. Jak zainstalować i skonfigurować MongoDB na Ubuntu?

  4. Filtruj wyniki według wartości pola ostatniego wpisu w tablicy

  5. MongoDB + sterownik C# + tablica zapytań zawierająca elementy, w której każdy element tablicy zawiera dokument podrzędny do zapytania