MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongoose sélectionne les champs à renvoyer à partir de findOneAndUpdate

Depuis le manuel, les options l'argument a besoin d'un "fields" saisissez-le car il existe d'autres détails tels que "upsert" et "new" où cela s'applique. Dans votre cas, vous également veux le "new" choix :

User.findOneAndUpdate(
  { "_id": "132324" },
  { "$set": { "hair_color": "yellow" } },
  {
   "fields": { "first_name":1, "last_name": 1 },
   "new": true 
  }
).exec(...)

Vous pouvez également utiliser .select()

User.select({ "first_name": 1, "last_name": 1 }).findOneAndUpdate(
  { "_id": "132324" },
  { "$set": { "hair_color": "yellow" } },
  { "new": true }
).exec(...)

Notant que sans "new": true le document retourné est dans l'état avant la modification de la mise à jour a été traitée. Parfois, c'est ce que vous voulez dire, mais la plupart du temps, vous voulez vraiment le document modifié.