Musíte nastavit možnost v dotazu useFindAndModify
na false
, jak je uvedeno v dokumentech.
(vyhledávací klíčové slovo Aktuálně podporované možnosti jsou )
'useFindAndModify':ve výchozím nastavení true. Nastavte na false, aby makefindOneAndUpdate() a findOneAndRemove() použily nativefindOneAndUpdate() místo findAndModify().
a pokud vidíte definiční soubor mongoose, kde je zmíněno, že volá příkaz findAndModify update.
/**
* 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>;
Nedávno aktualizováno v dokumentech mongoose (Klikněte sem) pro tato ukončení podpory, kde je uvedeno:
FindOneAndUpdate() od Mongoose dlouho předchází funkci sfindOneAndUpdate() ovladače MongoDB, takže místo toho používá funkci sfindAndModify() ovladače MongoDB.
Existují tři nebo více způsobů, jak se vyhnout použití FindAndModify
:
- Na globální úrovni:Nastavte možnost na hodnotu false.
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
- Na úrovni připojení:můžeme konfigurovat pomocí možností připojení:
mongoose.connect(uri, { useFindAndModify: false });
- Na úrovni dotazu:
await ModelName.findOneAndUpdate({matchQuery},
{$set: updateData}, {useFindAndModify: false});