MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Avviso di deprecazione:collection.findAndModify è deprecato. Utilizzare invece findOneAndUpdate, findOneAndReplace o findOneAndDelete?

Devi impostare l'opzione nella query useFindAndModify a false , come indicato nei documenti.

(la parola chiave di ricerca Le opzioni attualmente supportate sono )

'useFindAndModify':true per impostazione predefinita. Imposta su false per makefindOneAndUpdate() e findOneAndRemove() usa nativefindOneAndUpdate() invece di findAndModify().

e se vedi il file di definizione di mangusta, dove menzionato che chiama il comando di aggiornamento 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>;

Aggiornato di recente nei documenti di mangusta (fai clic qui) per questi deprecazione dove menzionato:

FindOneAndUpdate() long di Mongoose precede la funzionefindOneAndUpdate() del driver MongoDB, quindi utilizza invece la funzione findAndModify() del driver MongoDB.

Esistono tre o più modi per evitare l'uso di FindAndModify :

  1. A livello globale:imposta l'opzione su false.
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
  1. A livello di connessione:possiamo configurare utilizzando le opzioni di connessione:
    mongoose.connect(uri, { useFindAndModify: false });
  1. A livello di query:
   await ModelName.findOneAndUpdate({matchQuery},
   {$set: updateData}, {useFindAndModify: false});