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
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 opstodrå
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.