sql >> Database teknologi >  >> NoSQL >> MongoDB

Standardværdien er ikke angivet, mens du bruger Update with Upsert som sand

Til tilføjelse af standardindstillinger til dit dokument, hvis det blev oprettet med findOneAndUpdate (det eksisterede ikke før forespørgslen), og du angav ikke feltet i opdateringen, du skal bruge setDefaultsOnInsert .

Når upsert og setDefaultsOnInsert er begge true , indstilles standardindstillingerne, hvis posten ikke findes, og en ny oprettes. Dette springer arbejdsgangen over, hvor man skal kontrollere, om posten eksisterer, og hvis ikke, så oprettes en ny med "gem" bare for at sikre, at standardindstillingerne er angivet .

Jeg har haft det samme problem (registrering oprettet med findOneAndUpdate med upsert: true ) og standardværdien for et felt blev ikke tilføjet til posten, selvom den var i skemaet. Dette er kun med hensyn til tilføjelse af standardindstillinger ved brug af findOneAndUpdate at oprette dokumenter, ikke for at springe opdateringen af ​​feltet 'oprettet' over.

f.eks.

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


  1. MongoDB tekstsøgning og bestil efter

  2. Hvordan beregner man procentdelen ved hjælp af facet i MongoDB?

  3. Yii2 Aktiv registrering af, hvordan man skaber relation mellem mongo-modeller

  4. Finder skæringspunktet mellem to samlinger i MongoDb