// note: this uses async/await so it assumes the whole thing
// is in an async function
const doc = await CharacterModel.findOneAndUpdate(
{ name: 'Jon Snow' },
{ title: 'King in the North' },
// If `new` isn't true, `findOneAndUpdate()` will return the
// document as it was _before_ it was updated.
{ new: true }
);
doc.title; // "King in the North"
const Character = mongoose.model('Character', new mongoose.Schema({
name: String,
age: Number
}));
await Character.create({ name: 'Jean-Luc Picard' });
const filter = { name: 'Jean-Luc Picard' };
const update = { age: 59 };
// `doc` is the document _before_ `update` was applied
let doc = await Character.findOneAndUpdate(filter, update);
doc.name; // 'Jean-Luc Picard'
doc.age; // undefined
doc = await Character.findOne(filter);
doc.age; // 59
// Using queries with promise chaining
Model.findOne({ name: 'Mr. Anderson' }).
then(doc => Model.updateOne({ _id: doc._id }, { name: 'Neo' })).
then(() => Model.findOne({ name: 'Neo' })).
then(doc => console.log(doc.name)); // 'Neo'
// Using queries with async/await
const doc = await Model.findOne({ name: 'Neo' });
console.log(doc.name); // 'Neo'