MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose wählt Felder aus, die von findOneAndUpdate zurückgegeben werden sollen

Aus dem Handbuch die options Argument benötigt ein "fields" Geben Sie es ein, da es andere Details wie "upsert" gibt und "new" wo dies zutrifft. In Ihrem Fall Sie auch wollen den "new" Möglichkeit:

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

Alternativ können Sie .select() verwenden

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

Beachten Sie, dass ohne "new": true das zurückgegebene Dokument ist im Zustand vorher Die Änderung des Updates wurde verarbeitet. Manchmal meinen Sie das, aber meistens möchten Sie wirklich das modifizierte Dokument.