sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongoose selecciona campos para regresar de findOneAndUpdate

Del manual, las options el argumento necesita un "fields" escríbalo ya que hay otros detalles como "upsert" y "new" donde esto se aplica. En tu caso también quiero el "new" opción:

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

Alternativamente, puede usar .select()

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

Teniendo en cuenta que sin "new": true el documento devuelto está en el estado antes se procesó la modificación de la actualización. Algunas veces esto es lo que quiere decir, pero la mayoría de las veces realmente desea el documento modificado.