Musisz ustawić opcję w zapytaniu useFindAndModify
na false
, jak wspomniano w dokumentacji.
(słowo kluczowe wyszukiwania Obecnie obsługiwane opcje to )
„useFindAndModify”:domyślnie prawda. Ustaw na false, aby makefindOneAndUpdate() i findOneAndRemove() używały nativefindOneAndUpdate() zamiast findAndModify().
i jeśli zobaczysz plik definicji mangusty, w którym wspomniano, że wywołuje polecenie aktualizacji 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>;
Ostatnio zaktualizowane w dokumentacji mangusty (kliknij tutaj) dla tych wycofanych, gdzie wspomniano:
Funkcja findOneAndUpdate() Mongoose jest długa przed funkcją sfindOneAndUpdate() sterownika MongoDB, więc zamiast tego używa funkcji sfindAndModify() sterownika MongoDB.
Istnieją trzy lub więcej sposobów na uniknięcie użycia FindAndModify
:
- Na poziomie globalnym:ustaw opcję na fałsz.
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
- Na poziomie połączenia:możemy skonfigurować za pomocą opcji połączenia:
mongoose.connect(uri, { useFindAndModify: false });
- Na poziomie zapytania:
await ModelName.findOneAndUpdate({matchQuery},
{$set: updateData}, {useFindAndModify: false});