Você precisa definir a opção na consulta
useFindAndModify
para false
, conforme mencionado nos documentos. (palavra-chave de pesquisa As opções atualmente suportadas são )
'useFindAndModify':true por padrão. Defina como false para makefindOneAndUpdate() e findOneAndRemove() use nativefindOneAndUpdate() em vez de findAndModify().
e se você vir o arquivo de definição de mangusto, onde mencionou que ele chama o comando de atualização 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>;
Atualizado recentemente nos documentos do mangusto (Clique aqui) para essas descontinuações quando mencionadas:
O findOneAndUpdate() do Mongoose é muito anterior à função do driver do MongoDB, então ele usa a função do driver do MongoDB como o findAndModify().
Existem três maneiras ou mais pelas quais você pode evitar o uso de
FindAndModify
:- No nível global:defina a opção como false.
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
- No nível de conexão:podemos configurar usando as opções de conexão:
mongoose.connect(uri, { useFindAndModify: false });
- No nível da consulta:
await ModelName.findOneAndUpdate({matchQuery},
{$set: updateData}, {useFindAndModify: false});