sql >> Databasteknik >  >> NoSQL >> MongoDB

Standardvärdet har inte angetts när du använder Uppdatera med Upsert som sant

För att lägga till standardinställningar till ditt dokument om det skapades med findOneAndUpdate (det fanns inte före frågan) och du angav inte fältet i uppdateringen bör du använda setDefaultsOnInsert .

När upsert och setDefaultsOnInsert är båda true , kommer standardinställningarna att ställas in om posten inte hittas och en ny skapas. Detta hoppar över arbetsflödet med att behöva kontrollera om posten finns och om inte, skapa en ny med "spara" bara för att se till att standardinställningarna är inställda .

Jag har haft samma problem (post skapad med findOneAndUpdate med upsert: true ) och standardvärdet för ett fält lades inte till i posten, även om det fanns i schemat. Detta gäller bara för att lägga till standardvärden när du använder findOneAndUpdate för att skapa dokument, inte för att hoppa över uppdateringen av fältet "skapat".

t.ex.

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


  1. Hur man sparar endast datumdel med mongoose, inte i ISODate-format

  2. Anpassat lagringssystem för GridFS (MongoDB)?

  3. Hur man förhindrar återställningar i MongoDB

  4. Flera nod-mongodb-native anslutningar