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

Mongoose seleziona i campi da cui tornare da findOneAndUpdate

Dal manuale, le options l'argomento necessita di un "fields" digitarlo poiché ci sono altri dettagli come "upsert" e "new" dove questo si applica. Nel tuo caso anche vuoi il "new" opzione:

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

In alternativa puoi usare .select()

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

Notando che senza "new": true il documento restituito è nello stato prima la modifica dell'aggiornamento è stata elaborata. A volte questo è ciò che intendi, ma la maggior parte delle volte vuoi davvero il documento modificato.