Трябва да зададете опцията в заявката useFindAndModify
до false
, както е посочено в документите.
(ключова дума за търсене Поддържаните в момента опции са )
'useFindAndModify':вярно по подразбиране. Задайте на false за makefindOneAndUpdate() и findOneAndRemove() използвайте nativefindOneAndUpdate() вместо findAndModify().
и ако видите файла с дефиниция на mongoose, където е споменато, че той извиква командата за актуализиране findAndModify.
/**
* 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>;
Наскоро актуализиран в документите на mongoose (Щракнете тук) за тези оттегляне, където е споменато:
FindOneAndUpdate() на Mongoose дълго предшества функцията sfindOneAndUpdate() на драйвера MongoDB, така че вместо това използва функцията sfindAndModify() на драйвера MongoDB.
Има три или повече начина, по които можете да избегнете използването на FindAndModify
:
- На глобално ниво:Задайте опцията на false.
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
- На ниво връзка:можем да конфигурираме с помощта на опциите за връзка:
mongoose.connect(uri, { useFindAndModify: false });
- На ниво заявка:
await ModelName.findOneAndUpdate({matchQuery},
{$set: updateData}, {useFindAndModify: false});