MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBで複数のIDを一括削除する方法:$in演算子の使い方

MongoDBで複数のID(ドキュメント)を一度に削除したい場合、$in演算子を使用すると便利です。この記事では、実際のコード例を交えながら、複数のObjectIdを指定してドキュメントをまとめて削除する手順をわかりやすく解説します。

基本構文

複数の_idを削除する際の基本的な構文は以下の通りです。$in演算子に削除したいObjectIdを配列形式で渡します。

db.yourCollectionName.remove( { _id : { $in: [yourObjectId1, yourObjectId2, yourObjectId3] } } );

サンプルコレクションの作成

まずは動作確認用に、複数のドキュメントを含むコレクションを作成しましょう。ここでは「deleteMultipleIdsDemo」というコレクションに5件のドキュメントを挿入します。

> db.deleteMultipleIdsDemo.insertOne({"ClientName":"Chris","ClientAge":26});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9cd7d6a629b87623db1b19")
}
> db.deleteMultipleIdsDemo.insertOne({"ClientName":"Robert","ClientAge":28});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9cd7dea629b87623db1b1a")
}
> db.deleteMultipleIdsDemo.insertOne({"ClientName":"Sam","ClientAge":25});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9cd7e9a629b87623db1b1b")
}
> db.deleteMultipleIdsDemo.insertOne({"ClientName":"John","ClientAge":34});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9cd7f7a629b87623db1b1c")
}
> db.deleteMultipleIdsDemo.insertOne({"ClientName":"Carol","ClientAge":36});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9cd803a629b87623db1b1d")
}

登録済みドキュメントの確認

find()メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。

> db.deleteMultipleIdsDemo.find().pretty();

上記のクエリを実行すると、以下のような出力が得られます。

{
    "_id" : ObjectId("5c9cd7d6a629b87623db1b19"),
    "ClientName" : "Chris",
    "ClientAge" : 26
}
{
    "_id" : ObjectId("5c9cd7dea629b87623db1b1a"),
    "ClientName" : "Robert",
    "ClientAge" : 28
}
{
    "_id" : ObjectId("5c9cd7e9a629b87623db1b1b"),
    "ClientName" : "Sam",
    "ClientAge" : 25
}
{
    "_id" : ObjectId("5c9cd7f7a629b87623db1b1c"),
    "ClientName" : "John",
    "ClientAge" : 34
}
{
    "_id" : ObjectId("5c9cd803a629b87623db1b1d"),
    "ClientName" : "Carol",
    "ClientAge" : 36
}

複数のIDを削除するクエリの実行

それでは、$in演算子を使って3つのドキュメントをまとめて削除してみましょう。削除したいObjectIdを配列に列挙します。

> db.deleteMultipleIdsDemo.remove( { _id : { $in: [ObjectId("5c9cd7dea629b87623db1b1a"),
... ObjectId("5c9cd803a629b87623db1b1d"),
... ObjectId("5c9cd7d6a629b87623db1b19")
... ] } } );
WriteResult({ "nRemoved" : 3 })

実行結果の「nRemoved : 3」は、3件のドキュメントが正常に削除されたことを示しています。

削除後の状態を確認

最後に、本当に複数のIDが削除されたかどうかを確認してみましょう。

> db.deleteMultipleIdsDemo.find().pretty();

以下の出力を見ると、3件のドキュメントが正常に削除され、残り2件のみが残っていることがわかります。

{
    "_id" : ObjectId("5c9cd7e9a629b87623db1b1b"),
    "ClientName" : "Sam",
    "ClientAge" : 25
}
{
    "_id" : ObjectId("5c9cd7f7a629b87623db1b1c"),
    "ClientName" : "John",
    "ClientAge" : 34
}

補足:remove()とdeleteMany()について

なお、MongoDBの新しいバージョンでは、remove()メソッドは非推奨となっています。代わりにdeleteMany()メソッドを使用することをおすすめします。

db.deleteMultipleIdsDemo.deleteMany( { _id : { $in: [ObjectId("...") , ObjectId("...")] } } );

どちらのメソッドでも同じ条件式が使えるため、$in演算子による複数IDの一括削除は同様に行えます。

  1. 【保存版】iPhoneで複数の連絡先を一括削除する方法を徹底解説!

    iOSはこれまで数多くの機能改善と強化が重ねられてきましたが、純正の「連絡先」アプリはApple自身の水準から見てもまだ十分とは言えません。なかでも多くのユーザーが強く求めているのが、「複数の連絡先を一度に削除する機能」です。残念ながら標準機能としては搭載されていませんが、ご安心ください。Mac・PC・サードパーティ製アプリなどを活用すれば、まとめて削除することが可能です。本記事では、その具体的な方法を詳しく解説します。iPhoneで連絡先を1件ずつ削除する方法まず基本として、連絡先を1件ずつ削除する手順を確認しておきましょう。削除したい連絡先が少数の場合は、この方法が最も手軽です。iPhon

  2. Excelで複数の行を削除する3つの簡単な方法【初心者向け】

    Excelは、Microsoftが開発・販売している表計算ソフトです。1993年にバージョン5がリリースされて以来、幅広いユーザーに普及し、それまで業界標準であった「Lotus 1-2-3」に取って代わりました。ExcelはMicrosoft Officeパッケージに含まれる基本ソフトウェアの一つで、ビジネスシーンやオフィスワークにおいて欠かせないツールとして広く活用されています。Excelのスプレッドシートは「行」と「列」で構成されています。縦方向につながったセルの集まりを「列」、横方向につながったセルの集まりを「行」と呼びます。本記事では、スプレッドシートを壊すことなくExcelで複数の行