sql >> Database >  >> NoSQL >> MongoDB

Mongoose upsert maakt geen standaard schema-eigenschap

Wat er aan de hand is, is dat geen van de validatie-, middleware- of standaardwaarden van Mongoose wordt gebruikt bij het aanroepen van een van de "update" -familie van methoden, zoals findByIdAndUpdate . Ze worden alleen aangeroepen door oproepen om save of create .

De reden hiervoor is dat de "update"-aanroepen in feite pass-throughs zijn naar het native stuurprogramma, waarbij Mongoose alleen typecasting van de velden levert op basis van de schemadefinitie.

Mongoose 4.0-update

Mongoose ondersteunt nu het instellen van standaardwaarden wanneer een nieuw document wordt gemaakt tijdens een update , findOneAndUpdate , of findByIdAndUpdate opperen. Stel de setDefaultsOnInsert . in optie tot true om dit mogelijk te maken. Dit gebruikt de $setOnInsert operator om de standaardinstellingen bij invoegen te maken.

var queryOptions = {
    upsert: true,
    setDefaultsOnInsert: true
};
Company.findByIdAndUpdate(id, company, queryOptions).exec( ...


  1. Hoe de mongodb-replicatieset te initialiseren zonder rs.initiate() aan te roepen?

  2. Kan vergrendelingsbestand niet maken/openen:/data/mongod.lock errno:13 Toestemming geweigerd

  3. een python docker-container krijgen om te communiceren met een redis docker-container

  4. TypeError:ObjectId('') is niet JSON-serialiseerbaar