sql >> Databáze >  >> NoSQL >> MongoDB

Názvy polí dokumentu nemohou začínat '$' (chybný klíč:'$set')

Neměli byste mít { "orgId" : 2 } v aktualizačním dokumentu.

Odstraňte tento řádek z kódu a mělo by to fungovat dobře.

u.append("orgId", orgId);

Důvod, proč jste spustili chybu, byl ten, že existují dva způsoby, jak specifikovat aktualizaci pro dokument, a vytvořili jste kříženec obou. Možnosti jsou:

  1. Poskytněte úplný dokument pro aktualizaci. U tohoto modelu je existující dokument přepsán poskytnutým dokumentem.
  2. Používá operátory aktualizace k úpravě stávajícího dokumentu v kolekci.

Pokud používáte druhou verzi, pak všechny "klíče nejvyšší úrovně" v dokumentu aktualizace budou začínat znakem $ . Pokud použijete první možnost, žádná z kláves nejvyšší úrovně nebude začínat znakem $ . Kód se podíval na první pole, myslel si, že jde o náhradní dokument, a pak selhal, když se pokusil ověřit platnost zbytku dokumentu, protože klíče v dokumentech nemohou začínat znakem $ (aby nedošlo k záměně s aktualizačními nebo dotazovacími dokumenty).

Upravit:

V případě upsert (např. dokument již neexistuje a označíte aktualizaci, abyste povolili upsert) se k vložení dokumentu použijí operátory přesné shody dotazu. Pro výše uvedený příklad získáme výchozí dokument { "orgId" : 2 } . Server poté použije operátory aktualizace a uloží výsledek.




  1. Jak zálohovat a obnovit databázi Mongodb

  2. Nahrání a stažení souboru pomocí meteoru

  3. Nejlepší způsob, jak číst a aktualizovat dokumenty mongodb pomocí pymongo

  4. Pro let se nezvyšuje, pokud je v poli stejná položka