クエリuseFindAndModify
でオプションを設定する必要があります false
に 、ドキュメントに記載されているように。
(検索キーワード現在サポートされているオプションは )
'useFindAndModify':デフォルトでtrue。 falseに設定すると、makefindOneAndUpdate()およびfindOneAndRemove()は、findAndModify()ではなくnativefindOneAndUpdate()を使用します。
また、mongooseの定義ファイルが表示されている場合は、findAndModifyupdateコマンドを呼び出していると記載されています。
/**
* 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>;
言及されているこれらの非推奨については、マングースのドキュメント(ここをクリック)で最近更新されました:
MongooseのfindOneAndUpdate()は、MongoDBドライバーのfindOneAndUpdate()関数よりもずっと前から存在しているため、代わりにMongoDBドライバーのfindAndModify()関数を使用します。
FindAndModify
の使用を回避する方法は3つ以上あります。 :
- グローバルレベル:オプションをfalseに設定します。
// Make Mongoose use `findOneAndUpdate()`. Note that this option is `true`
// by default, you need to set it to false.
mongoose.set('useFindAndModify', false);
- 接続レベル:接続オプションを使用して構成できます:
mongoose.connect(uri, { useFindAndModify: false });
- クエリレベル:
await ModelName.findOneAndUpdate({matchQuery},
{$set: updateData}, {useFindAndModify: false});