MongoDB の deleteMany()と Remove()の違い
deleteMany()
と remove()
はどちらも、MongoDB からエントリを削除するために使用されます。最近のバージョンでは、remove
は非推奨としてマークされています。
むしろ、MongoDB は deleteMany
と deleteOne
の使用を提案しています。コマンド deleteMany
は、削除する前に一致するパラメーターを受け入れることができます。
MongoDB の deleteMany()
のパラメーターと戻り値
このメソッドは、モンゴッシュからのものです。通常、コレクションでは、特定のコレクションの下にあるドキュメントを削除するために使用されます。
使用方法は次のとおりです。
db.collection.deleteMany(
<FILTER>,{
writeConcern: <document>,
collation: <document>
}
)
<FILTER>
は、カスタム検索フィールドを使用できることを表します。価格が 30
に等しいすべての製品を削除したいとします。
その場合、コードは次のようになります。
db.collection.deleteMany({
price:30
})
ここで他のパラメータを空にすることができます。コレクション全体を削除する場合は、deleteMany
に {}
を挿入します。
writeConcern
と collation
について詳しくはこちらをご覧ください。
パラメータ | タイプ | 説明 |
---|---|---|
writeConcern |
書類 | これはオプションのパラメータです。ドキュメントに確認応答を入れます。writeConcern の詳細については、このブログにアクセスしてください。 |
collation |
書類 | これにより、ユーザーはドキュメントに言語固有のルールを使用できます。照合はオプションのパラメーターです。使用する場合は、ローカル フィールドを使用する必要があります。collation について詳しくはこちらをご覧ください。 |
関数が writeConcern
パラメータを指定して実行された場合、deleteMany()
は acknowledged
を true
として返します。それ以外の場合は、false
。また、削除されたドキュメントの数を示す deleteCount
も返します。
deleteMany
は、フィルターに一致するすべてのドキュメントを削除します。
サンプルの返品は次のようになります。
{ "acknowledged" : true, "deletedCount" : 9 }
MongoDB の remove()
のパラメーターと戻り値
remove()
メソッドには 2つの機能があります。deleteMany
および deleteOne
としても機能します。
remove()
のテンプレートコードはこちらです。
db.collection.remove(
<query>,
<justOne>
)
通常、これら 2つのパラメーターが使用されます。また、これを次のように拡張できます。
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>,
collation: <document>
}
)
writeConcern
と collation
は、deleteMany()
について上で説明したものと同じです。ここでは、フィルターの代わりに query
を使用できます。
MongoDB の query
の詳細については、次のリンクにアクセスしてください。
remove
メソッドで空のオブジェクトを渡すと、コレクションからすべてのドキュメントが削除されます。たとえば、product
コレクションがあり、価格が 5 未満のすべての商品を削除したいとします。
その場合、コマンドは次のようになります。
db.products.remove(
{price:{ $lt: 5}}
)
このコマンドを実行すると、justOne
パラメーターはデフォルトで false
になります。これで、同じクエリの要素を 1つだけ削除する場合、コマンドは次のようになります。
db.products.remove(
{price:{ $lt: 5}}, true
)
このメソッドは、次のパラメータを持つ WriteResult
というオブジェクトを返します。
WriteResult({ "nRemoved" : 10 })
また、writeError
と writeConcern
があります。これらは上記の writeConcern
に関連しています。
remove()
は、MongoDB の新しいバージョンで非推奨になりました。したがって、NodeJS アプリの開発中は、deleteOne
または deleteMany
のみを使用する必要があります。
remove()
の詳細については、次の Web サイトにアクセスしてください。