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

Sådan opdaterer du en matrixværdi i Mongoose

Du kan ikke bruge både $set og $push i det samme opdateringsudtryk som indlejrede operatorer.

Den korrekte syntaks til brug af opdateringsoperatørerne følger:

{ :{ :, ... }, :{ :, ... }, ...}

hvor , kan være fra en hvilken som helst af listen over opdateringsoperatører, der er angivet her.

For at tilføje et nyt element til arrayet, et enkelt $push operatør vil være tilstrækkeligt f.eks. du kan bruge findByIdAndUpdate opdateringsmetode for at returnere det ændrede dokument som

Employeehierarchy.findByIdAndUpdate(employeeparent._id, { "$push":{ "childrens":werknemer._id } }, { "new":true, "upsert":true }, function (err, managerparent ) { if (err) throw err; console.log(managerparent); }); 

Brug din originale update() metode, er syntaksen

Employeehierarchy.update( { "_id":employeeparent._id}, { "$push":{ "childrens":werknemer._id } }, function (err, raw) { if (err) return handleError (err); console.log('Det rå svar fra Mongo var ', råt); }); 

hvor tilbagekaldsfunktionen modtager argumenterne (err, raw) hvor

  • fejl er fejlen, hvis nogen opstod
  • er det fulde svar fra Mongo

Da du vil kontrollere det ændrede dokument, vil jeg foreslå, at du bruger findByIdAndUpdate funktion siden update() metoden vil ikke give dig det ændrede dokument, kun det fulde skriveresultat fra mongo.

Hvis du vil opdatere et felt i dokumentet og tilføje et element til et array på samme tid, kan du gøre

Employeehierarchy.findByIdAndUpdate(employeeparent._id, { "$set":{ "name":"foo" }, "$push":{ "childrens":werknemer._id } } { "new":true, "upsert":true }, function (err, managerparent) { if (err) throw err; console.log(managerparent); }); 

Ovenstående vil opdatere navnet felt til "foo" og tilføj medarbejder-id'et til childrens array.



  1. Hvordan kan vi oprette autogenereret felt til mongodb ved hjælp af fjederstøvle

  2. Hvordan kan jeg opdatere flere dokumenter i mongoose?

  3. Ubuntu 16.04 systemd genopretter problemer med ulimit

  4. MongoDB forskelle mellem NumberLong og simple Integer?