MongoDBコレクションから$eq演算子に一致するドキュメントを削除する方法
MongoDBコレクションから、$eq演算子で値が一致するドキュメントをremove()メソッドを使って削除する方法を解説します。$eq演算子は、指定したフィールドの値が指定値と等しいドキュメントに一致させるための比較演算子です。
サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成しましょう。
> db.demo626.insertOne({id:1,"Name":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9ac6376c954c74be91e6ae")
}
> db.demo626.insertOne({id:2,"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9ac63e6c954c74be91e6af")
}
> db.demo626.insertOne({id:3,"Name":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9ac6436c954c74be91e6b0")
}
> db.demo626.insertOne({id:4,"Name":"Mike"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9ac6486c954c74be91e6b1")
}コレクション内の全ドキュメントを表示
find()メソッドを使って、コレクション内のすべてのドキュメントを表示します。
> db.demo626.find();
実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e9ac6376c954c74be91e6ae"), "id" : 1, "Name" : "Chris" }
{ "_id" : ObjectId("5e9ac63e6c954c74be91e6af"), "id" : 2, "Name" : "David" }
{ "_id" : ObjectId("5e9ac6436c954c74be91e6b0"), "id" : 3, "Name" : "Bob" }
{ "_id" : ObjectId("5e9ac6486c954c74be91e6b1"), "id" : 4, "Name" : "Mike" }$eq演算子を使ったドキュメントの削除
次のクエリは、$eq演算子を使用して「Name」フィールドが「Bob」と一致するドキュメントをコレクションから削除します。
> db.demo626.remove({Name:{$eq:"Bob"}});
WriteResult({ "nRemoved" : 1 })出力のnRemoved : 1は、1件のドキュメントが削除されたことを示しています。
削除後のドキュメントを確認
再度find()メソッドを実行して、削除後のコレクションの状態を確認しましょう。
> db.demo626.find();
実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e9ac6376c954c74be91e6ae"), "id" : 1, "Name" : "Chris" }
{ "_id" : ObjectId("5e9ac63e6c954c74be91e6af"), "id" : 2, "Name" : "David" }
{ "_id" : ObjectId("5e9ac6486c954c74be91e6b1"), "id" : 4, "Name" : "Mike" }「Name」が「Bob」であるドキュメント(id:3)が削除され、残りの3件のドキュメントだけが表示されていることが確認できます。
補足:最新のMongoDBでの推奨方法
なお、remove()メソッドは非推奨(deprecated)となっており、MongoDBの最新バージョンではdeleteOne()またはdeleteMany()メソッドの使用が推奨されています。同じ処理は次のように書き換えられます。
> db.demo626.deleteOne({Name:{$eq:"Bob"}});deleteOne()は条件に一致した最初の1件のみを削除し、deleteMany()は条件に一致するすべてのドキュメントを削除します。
-
MongoDBでコレクションから配列フィールド全体を削除するクエリの書き方
MongoDBで配列フィールドを完全に削除するにはMongoDBのコレクションから、ドキュメント内の配列フィールドそのもの(フィールドごと)を取り除きたい場合は、更新演算子の $unset を使用します。$unset は指定したフィールドをドキュメントから削除する演算子で、配列の中身だけを空にするのではなく、フィールド自体が存在しない状態にできます。ここでは、サンプルコレクションを作成して、実際に配列フィールドを削除する手順を見ていきましょう。1. サンプルコレクションの作成まず、insertOne() メソッドを使ってドキュメントを挿入し、テスト用のコレクション demo609 を作成します
-
MongoDBコレクションから重複を削除する方法|unique制約の使い方を解説
MongoDBコレクションから重複を削除する方法MongoDBのコレクションに重複データが登録されるのを防ぎたい場合は、ユニーク制約(unique: true)を設定するのが最も基本的かつ確実な方法です。対象フィールドにユニークインデックスを作成しておくことで、同じ値を持つドキュメントの挿入が自動的に拒否され、コレクション内に重複が存在しない状態を維持できます。基本構文以下のように、コレクション名とフィールド名を指定してユニークインデックスを作成します。「dropDups: true」を付けることで、インデックス作成時点で既に存在していた重複ドキュメントも削除され、各グループの最初の1件のみが