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

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 演算子を使うのが最もシンプルで確実な方法です。条件に一致するすべての要素が一括で削除されるため、メールアドレスやタグなど、重複した要素をまとめて取り除きたい場合にも便利です。

  1. 【MongoDB】$unset演算子でドキュメント内の特定データ(フィールド)を削除する方法

    MongoDBでドキュメント内の特定データを削除する方法 MongoDBでドキュメントから特定のフィールド(データ)を削除するには、$unset演算子を使用します。まず、サンプルとしてコレクションを作成し、ドキュメントを挿入してみましょう。 > db.demo20.insertOne( ...    { ... ...       "ListOfEmployee" : [ ...          { ...         &n

  2. MongoDBで_idを指定してドキュメントを削除する方法を徹底解説

    MongoDBで_idを指定してドキュメントを削除する方法 MongoDBでは、remove()メソッドを使用することで、_idを指定して特定のドキュメントを削除できます。本記事では、実際のコード例を交えながら、削除の手順をわかりやすく解説します。 基本構文 _idでドキュメントを削除する際の基本的な構文は以下のとおりです。 db.yourCollectionName.remove({_id: yourObjectId}); サンプルコレクションの作成 まず、動作を確認するために、ドキュメントを含むコレクションを作成します。 > db.demo518.insertOne({ClientN