Du måste ställa in alternativet i frågan useFindAndModify
till false
, som nämns i dokumenten.
(sökordet De alternativ som stöds för närvarande är )
'useFindAndModify':sant som standard. Ställ in på false för makefindOneAndUpdate() och findOneAndRemove() använd nativefindOneAndUpdate() istället för findAndModify().
och om du ser definitionsfilen för mongoose, där nämns att den anropar findAndModify update-kommandot.
/**
* Issues a mongodb findAndModify update command.
* Finds a matching document, updates it according to the update arg,
passing any options,
* and returns the found document (if any) to the callback. The query
executes immediately
* if callback is passed else a Query object is returned.
*/
findOneAndUpdate(): DocumentQuery<T | null, T>;
Nyligen uppdaterad i mongoose-dokumenten (Klicka här) för dessa avskrivningar där de nämns:
Mongooses findOneAndUpdate() är långt före MongoDB-drivrutinensfindOneAndUpdate()-funktionen, så den använder MongoDB-drivrutinensfindAndModify()-funktionen istället.
Det finns tre eller fler sätt på vilka du kan undvika användningen av FindAndModify
:
- På global nivå:Ställ in alternativet på false.
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
- På anslutningsnivå:vi kan konfigurera med anslutningsalternativen:
mongoose.connect(uri, { useFindAndModify: false });
- På frågenivå:
await ModelName.findOneAndUpdate({matchQuery},
{$set: updateData}, {useFindAndModify: false});