sql >> Databáze >  >> NoSQL >> MongoDB

DeprecationWarning:collection.findAndModify je zastaralá. Místo toho použít findOneAndUpdate, findOneAndReplace nebo findOneAndDelete?

Musíte nastavit možnost v dotazu useFindAndModify na false , jak je uvedeno v dokumentech.

(vyhledávací klíčové slovo Aktuálně podporované možnosti jsou )

'useFindAndModify':ve výchozím nastavení true. Nastavte na false, aby makefindOneAndUpdate() a findOneAndRemove() použily nativefindOneAndUpdate() místo findAndModify().

a pokud vidíte definiční soubor mongoose, kde je zmíněno, že volá příkaz findAndModify update.

 /**
  * 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>;

Nedávno aktualizováno v dokumentech mongoose (Klikněte sem) pro tato ukončení podpory, kde je uvedeno:

FindOneAndUpdate() od Mongoose dlouho předchází funkci sfindOneAndUpdate() ovladače MongoDB, takže místo toho používá funkci sfindAndModify() ovladače MongoDB.

Existují tři nebo více způsobů, jak se vyhnout použití FindAndModify :

  1. Na globální úrovni:Nastavte možnost na hodnotu 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. Na úrovni připojení:můžeme konfigurovat pomocí možností připojení:
    mongoose.connect(uri, { useFindAndModify: false });
  1. Na úrovni dotazu:
   await ModelName.findOneAndUpdate({matchQuery},
   {$set: updateData}, {useFindAndModify: false});



  1. Jak opravit VAROVÁNÍ při spuštění obrazu redis:alpine Docker

  2. 6 užitečných nástrojů pro sledování výkonu MongoDB

  3. Jak získat krátký název měsíce v SQL

  4. Hromadná aktualizace dokumentů v MongoDB