添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

To make findOneAndUpdate() return the updated document, you need to use the returnDocument option. returnDocument has two possible values: 'before' and 'after' . The default behavior is 'before' , which means returning the document as it was before the update was applied.

const testSchema = new mongoose.Schema({
    name: String
await Test.create({name: 'Test Testerson'});
await Model.findOneAndUpdate({name: 'Test Testerson'}, {name: 'MasteringJS.io'}, {returnDocument: 'before'});
// {name: 'Test Testerson', _id: ... , __v: ...}
await Model.findOneAndUpdate({name: 'Test Testerson'}, {name: 'MasteringJS.io'}, {returnDocument: 'after'});
// {name: 'MasteringJS.io', _id: ... , __v: ...}

The Time Before returnDocument

Before returnDocument was implemented, there were two similar options: returnOriginal or new . Both were booleans that did what returnDocument does now.

await Model.findOne(filter, update, {returnOriginal: false}); // equivalent to returnDocument: 'after'
await Model.findOne(filter, update, {new: true}); // equivalent to returnDocument: 'after'

Note: Mongoose still supports returnOriginal and new . But returnDocument is the recommended approach.

Want to become your team's MongoDB expert? "Mastering Mongoose" distills 8 years of hard-earned lessons building Mongoose apps at scale into 153 pages. That means you can learn what you need to know to build production-ready full-stack apps with Node.js and MongoDB in a few days. Get your copy!