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

MongoDBでコレクションから全データを削除するクエリの書き方

MongoDBでコレクション内のすべてのデータ(ドキュメント)を一括削除するには、remove()メソッドを使用します。この記事では、実際にコレクションを作成し、全データを削除するまでの一連の手順をサンプルコード付きでわかりやすく解説します。

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

まずはinsertOne()メソッドを使って、テスト用コレクション「demo309」にドキュメントを挿入しましょう。

> db.demo309.insertOne({ "details": [ { "Name": "Chris" }, { "Name": "David" }, { "Name": "Adam" } ] });
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4eb71af8647eb59e562040")
}
> db.demo309.insertOne({ "details": [ { "Name": "David" }, { "Name": "Mike" }, { "Name": "Bob" } ] });
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e4eb7cbf8647eb59e562041")
}

2. find()で登録済みドキュメントを確認する

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

> db.demo309.find();

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

{ "_id" : ObjectId("5e4eb71af8647eb59e562040"), "details" : [ { "Name" : "Chris" }, { "Name" : "David" }, { "Name" : "Adam" } ] }
{ "_id" : ObjectId("5e4eb7cbf8647eb59e562041"), "details" : [ { "Name" : "David" }, { "Name" : "Mike" }, { "Name" : "Bob" } ] }

3. remove({})ですべてのデータを削除する

削除条件として空のオブジェクト{}を指定してremove()を実行すると、コレクション内の全ドキュメントをまとめて削除できます。大規模なコレクションから全データを消す場合も、同じクエリで対応可能です。

> db.demo309.remove({});

実行結果は以下のとおりです。今回は2件のドキュメントが削除されたことが確認できます。

WriteResult({ "nRemoved" : 2 })

補足:新しいバージョンではdeleteMany()の利用が推奨

MongoDB 3.2以降ではremove()は非推奨(deprecated)となっており、公式にはdeleteMany()deleteOne()の使用が推奨されています。コレクション内の全ドキュメントを削除する場合は、次のように記述します。

> db.demo309.deleteMany({});

また、インデックスなどが必要ない場合は、remove({})やdeleteMany({})よりもdrop()でコレクション自体を削除して作り直すほうが高速なケースもあります。用途に応じて適切な方法を選びましょう。

  1. MongoDBでコレクションから配列フィールド全体を削除するクエリの書き方

    MongoDBで配列フィールドを完全に削除するにはMongoDBのコレクションから、ドキュメント内の配列フィールドそのもの(フィールドごと)を取り除きたい場合は、更新演算子の $unset を使用します。$unset は指定したフィールドをドキュメントから削除する演算子で、配列の中身だけを空にするのではなく、フィールド自体が存在しない状態にできます。ここでは、サンプルコレクションを作成して、実際に配列フィールドを削除する手順を見ていきましょう。1. サンプルコレクションの作成まず、insertOne() メソッドを使ってドキュメントを挿入し、テスト用のコレクション demo609 を作成します

  2. MongoDBコレクションから重複を削除する方法|unique制約の使い方を解説

    MongoDBコレクションから重複を削除する方法MongoDBのコレクションに重複データが登録されるのを防ぎたい場合は、ユニーク制約(unique: true)を設定するのが最も基本的かつ確実な方法です。対象フィールドにユニークインデックスを作成しておくことで、同じ値を持つドキュメントの挿入が自動的に拒否され、コレクション内に重複が存在しない状態を維持できます。基本構文以下のように、コレクション名とフィールド名を指定してユニークインデックスを作成します。「dropDups: true」を付けることで、インデックス作成時点で既に存在していた重複ドキュメントも削除され、各グループの最初の1件のみが