MongoDB の deleteMany()と Remove()の違い

Shihab Sikder 2023年1月30日
  1. MongoDB の deleteMany() のパラメーターと戻り値
  2. MongoDB の remove() のパラメーターと戻り値
MongoDB の deleteMany()と Remove()の違い

deleteMany()remove() はどちらも、MongoDB からエントリを削除するために使用されます。最近のバージョンでは、remove は非推奨としてマークされています。

むしろ、MongoDB は deleteManydeleteOne の使用を提案しています。コマンド deleteMany は、削除する前に一致するパラメーターを受け入れることができます。

MongoDB の deleteMany() のパラメーターと戻り値

このメソッドは、モンゴッシュからのものです。通常、コレクションでは、特定のコレクションの下にあるドキュメントを削除するために使用されます。

使用方法は次のとおりです。

db.collection.deleteMany(
    <FILTER>,{
        writeConcern: <document>,
        collation: <document>
    }
)

<FILTER> は、カスタム検索フィールドを使用できることを表します。価格が 30 に等しいすべての製品を削除したいとします。

その場合、コードは次のようになります。

db.collection.deleteMany({
    price:30
})

ここで他のパラメータを空にすることができます。コレクション全体を削除する場合は、deleteMany{} を挿入します。

writeConcerncollation について詳しくはこちらをご覧ください。

パラメータ タイプ 説明
writeConcern 書類 これはオプションのパラメータです。ドキュメントに確認応答を入れます。writeConcern の詳細については、このブログにアクセスしてください。
collation 書類 これにより、ユーザーはドキュメントに言語固有のルールを使用できます。照合はオプションのパラメーターです。使用する場合は、ローカルフィールドを使用する必要があります。collation について詳しくはこちらをご覧ください。

関数が writeConcern パラメータを指定して実行された場合、deleteMany()acknowledgedtrue として返します。それ以外の場合は、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>
   }
)

writeConcerncollation は、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 })

また、writeErrorwriteConcern があります。これらは上記の writeConcern に関連しています。

remove() は、MongoDB の新しいバージョンで非推奨になりました。したがって、NodeJS アプリの開発中は、deleteOne または deleteMany のみを使用する必要があります。

remove() の詳細については、次の Web サイトにアクセスしてください。

著者: Shihab Sikder
Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website