MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongoose seleciona campos para retornar de findOneAndUpdate


No manual, as options argumento precisa de um "fields" digite-o, pois existem outros detalhes, como "upsert" e "new" onde isso se aplica. No seu caso, você também quer o "new" opção:
User.findOneAndUpdate(
  { "_id": "132324" },
  { "$set": { "hair_color": "yellow" } },
  {
   "fields": { "first_name":1, "last_name": 1 },
   "new": true 
  }
).exec(...)

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

Observando que sem "new": true o documento retornado está no estado antes a modificação da atualização foi processada. Algumas vezes é isso que você quer dizer, mas na maioria das vezes você realmente quer o documento modificado.