sql >> Database >  >> NoSQL >> MongoDB

Standaardwaarde niet ingesteld bij gebruik van Update met Upsert als true

Voor het toevoegen van standaardinstellingen aan uw document als het is gemaakt met findOneAndUpdate (het bestond niet vóór de zoekopdracht) en je hebt het veld in de update niet opgegeven dat je moet gebruiken setDefaultsOnInsert .

Wanneer upsert en setDefaultsOnInsert zijn beide true , worden de standaardinstellingen ingesteld als het record niet wordt gevonden en een nieuwe wordt gemaakt. Dit slaat de workflow over van het moeten controleren of het record bestaat en zo niet, dan een nieuwe maken met 'opslaan' om er zeker van te zijn dat de standaardinstellingen zijn ingesteld .

Ik heb hetzelfde probleem gehad (record gemaakt met findOneAndUpdate met upsert: true ) en de standaardwaarde voor een veld is niet toegevoegd aan de record, ook al stond het in het schema. Dit heeft alleen betrekking op het toevoegen van standaardwaarden bij gebruik van findOneAndUpdate om documenten te maken, niet om de update van het veld 'gemaakt' over te slaan.

bijv.

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


  1. Schakel stopwoordfiltering uit in een MongoDB-tekstzoekopdracht

  2. Hoe Mongodb ObjectId uit CSV-bestand importeren met mongoimport?

  3. Uitzondering in monitorthread tijdens verbinding met server localhost:27017 tijdens toegang tot MongoDB met Java

  4. Dynamische XML naar mongoDB