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

Výchozí hodnota není nastavena při použití Update with Upsert jako true

Pro přidání výchozích hodnot do dokumentu, pokud byl vytvořen pomocí findOneAndUpdate (před dotazem neexistovalo) a v aktualizaci jste nezadali pole, měli byste použít setDefaultsOnInsert .

Když upsert a setDefaultsOnInsert jsou obě true , výchozí hodnoty budou nastaveny, pokud záznam nebude nalezen a bude vytvořen nový. Tím se vynechá pracovní postup, kdy je nutné zkontrolovat, zda záznam existuje, a pokud ne, vytvořit nový pomocí „uložit“, abyste se ujistili, že jsou nastaveny výchozí hodnoty. .

Měl jsem stejný problém (záznam vytvořený pomocí findOneAndUpdate s upsert: true ) a výchozí hodnota pro pole nebyla přidána do záznamu, i když byla ve schématu. Týká se to pouze přidávání výchozích hodnot při použití findOneAndUpdate k vytváření dokumentů, nikoli k přeskočení aktualizace pole 'vytvořeno'.

např.

User.findOneAndUpdate({email: user.email}, user, {upsert: true, setDefaultsOnInsert:true}, ...)


  1. Jak nastavit nastavení projektu Visual Studio s ovladačem mongo-cxx?

  2. Mongodb najít porovnání prvků pole

  3. Úvod do datových struktur Redis:Seřazené sady

  4. Filtrujte prvky pole pomocí $regex