Debe configurar la opción en la consulta useFindAndModify
a false
, como se menciona en los documentos.
(palabra clave de búsqueda Las opciones admitidas actualmente son )
'useFindAndModify':verdadero por defecto. Establézcalo en falso para makefindOneAndUpdate() y findOneAndRemove() use nativefindOneAndUpdate() en lugar de findAndModify().
y si ve el archivo de definición de mangosta, donde se menciona que llama al comando de actualización 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>;
Actualizado recientemente en los documentos de mongoose (haga clic aquí) para estos desuso donde se menciona:
La función findOneAndUpdate() de Mongoose es anterior a la función findOneAndUpdate() del controlador MongoDB, por lo que utiliza la función findAndModify() del controlador MongoDB en su lugar.
Hay tres formas o más de evitar el uso de FindAndModify
:
- A nivel global:establezca la opción en falso.
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
- A nivel de conexión:podemos configurar mediante las opciones de conexión:
mongoose.connect(uri, { useFindAndModify: false });
- En el nivel de consulta:
await ModelName.findOneAndUpdate({matchQuery},
{$set: updateData}, {useFindAndModify: false});