MongoDBでドキュメント内の配列から特定の値を削除する方法($pull演算子の使い方)
MongoDBで配列から値を削除したい場合は、$pull 演算子を使用します。$pull は、既存の配列から指定した条件に一致する値(または複数の値)のすべてのインスタンスを取り除くための更新演算子です。
1. サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成しましょう。
> db.demo535.insertOne(
... {
... "studentId" : "101",
... "studentName" : "Chris",
... "ListOfMailIds" : [
... "Chris@gmail.com",
... "Chris@yahoo.com"
... ]
... }
... )
{
"acknowledged" : true,
"insertedId" : ObjectId("5e8c82bfef4dcbee04fbbc00")
}2. ドキュメントの確認
find() メソッドを使って、コレクション内のすべてのドキュメントを表示します。
> db.demo535.find();
実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e8c82bfef4dcbee04fbbc00"), "studentId" : "101", "studentName" : "Chris",
"ListOfMailIds" : [ "Chris@gmail.com", "Chris@yahoo.com" ] }3. $pull を使って配列の値を削除する
以下は、ドキュメント内の配列から特定の値を削除するクエリの例です。ここでは、「ListOfMailIds」配列から「Chris@yahoo.com」を削除しています。
> db.demo535.update(
... { _id: ObjectId("5e8c82bfef4dcbee04fbbc00") },
... { $pull: { 'ListOfMailIds': 'Chris@yahoo.com' } }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })「nModified : 1」と表示されていれば、1件のドキュメントが正常に更新されたことを意味します。
補足: MongoDB 3.x 以降では、update() の代わりに updateOne() や updateMany() の使用が推奨されています。上記のクエリは次のように書き換えられます。
db.demo535.updateOne(
{ _id: ObjectId("5e8c82bfef4dcbee04fbbc00") },
{ $pull: { 'ListOfMailIds': 'Chris@yahoo.com' } }
);4. 削除結果の確認
再度 find() メソッドを実行して、コレクション内のすべてのドキュメントを表示してみましょう。
> db.demo535.find();
実行すると、次の出力が得られます。
{ "_id" : ObjectId("5e8c82bfef4dcbee04fbbc00"), "studentId" : "101", "studentName" : "Chris", "ListOfMailIds" : [ "Chris@gmail.com" ] }このように、「ListOfMailIds」配列から「Chris@yahoo.com」だけが削除され、「Chris@gmail.com」はそのまま残っていることが確認できます。
まとめ
MongoDBで配列から特定の値を削除するには、$pull 演算子を使うのが最もシンプルで確実な方法です。条件に一致するすべての要素が一括で削除されるため、メールアドレスやタグなど、重複した要素をまとめて取り除きたい場合にも便利です。
-
【MongoDB】$unset演算子でドキュメント内の特定データ(フィールド)を削除する方法
MongoDBでドキュメント内の特定データを削除する方法 MongoDBでドキュメントから特定のフィールド(データ)を削除するには、$unset演算子を使用します。まず、サンプルとしてコレクションを作成し、ドキュメントを挿入してみましょう。 > db.demo20.insertOne( ... { ... ... "ListOfEmployee" : [ ... { ... &n
-
MongoDBで_idを指定してドキュメントを削除する方法を徹底解説
MongoDBで_idを指定してドキュメントを削除する方法 MongoDBでは、remove()メソッドを使用することで、_idを指定して特定のドキュメントを削除できます。本記事では、実際のコード例を交えながら、削除の手順をわかりやすく解説します。 基本構文 _idでドキュメントを削除する際の基本的な構文は以下のとおりです。 db.yourCollectionName.remove({_id: yourObjectId}); サンプルコレクションの作成 まず、動作を確認するために、ドキュメントを含むコレクションを作成します。 > db.demo518.insertOne({ClientN