Sie müssen die Option in der Abfrage useFindAndModify
setzen auf false
, wie in der Dokumentation erwähnt.
(Suchbegriff Aktuell unterstützte Optionen sind )
'useFindAndModify':standardmäßig wahr. Auf false setzen, um makefindOneAndUpdate() und findOneAndRemove() nativefindOneAndUpdate() statt findAndModify() zu verwenden.
und wenn Sie die Definitionsdatei von Mongoose sehen, wo erwähnt, dass sie den update-Befehl findAndModify aufruft.
/**
* 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>;
Kürzlich aktualisiert in den Mongoose-Dokumenten (hier klicken) für diese Verwerfungen, wo erwähnt:
Die Funktion findOneAndUpdate() von Mongoose ist lange älter als die Funktion findOneAndUpdate() des MongoDB-Treibers, sodass stattdessen die Funktion findAndModify() des MongoDB-Treibers verwendet wird.
Es gibt drei oder mehr Möglichkeiten, wie Sie die Verwendung von FindAndModify
vermeiden können :
- Auf globaler Ebene:Setzen Sie die Option auf "false".
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
- Auf Verbindungsebene:Wir können mit den Verbindungsoptionen konfigurieren:
mongoose.connect(uri, { useFindAndModify: false });
- Auf Abfrageebene:
await ModelName.findOneAndUpdate({matchQuery},
{$set: updateData}, {useFindAndModify: false});