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

MongoDBでObjectId配列から値を取り除く方法($pull演算子の使い方)

MongoDBでは、ObjectIdの配列から特定の値を取り除きたい場合に$pull演算子を使用します。この記事では、実際にコレクションを作成し、$pull演算子を使ってObjectId配列から値を削除する手順を、サンプルコード付きでわかりやすく解説します。

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

まず、ドキュメントを含むコレクションを作成しましょう。以下のようにinsertOne()メソッドを実行します。

> db.demo258.insertOne({"arrayOfObjectsId":[ ObjectId("5e47a5e81627c0c63e7dba92"),ObjectId("5e47a5e51627c0c63e7dba91")]});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5e47a8211627c0c63e7dba97")
}

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

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

> db.demo258.find();

実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5e47a8211627c0c63e7dba97"), "arrayOfObjectsId" : [ ObjectId("5e47a5e81627c0c63e7dba92"), ObjectId("5e47a5e51627c0c63e7dba91") ] }

$pull演算子でObjectId配列から値を取り除く

それでは、ObjectId配列から値を取り除くクエリを見ていきましょう。update()メソッドの中で$pull演算子を使い、さらに$in演算子と組み合わせることで、削除対象のObjectIdを指定できます。

> db.demo258.update( { }, { $pull: { arrayOfObjectsId: { $in: [ ObjectId("5e47a5e81627c0c63e7dba92") ] } } } );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

実行結果を見ると、「nModified : 1」と表示されており、1件のドキュメントが正常に更新されたことがわかります。

削除後のドキュメントを確認する

再度find()メソッドを実行して、更新後のドキュメントを表示してみましょう。

> db.demo258.find();

実行結果は以下の通りです。

{ "_id" : ObjectId("5e47a8211627c0c63e7dba97"), "arrayOfObjectsId" : [ ObjectId("5e47a5e51627c0c63e7dba91") ] }

このように、指定したObjectId(5e47a5e81627c0c63e7dba92)が配列から取り除かれていることが確認できます。

まとめ

MongoDBでObjectIdの配列から特定の値を取り除くには、$pull演算子と$in演算子を組み合わせるのが基本です。$inには複数のObjectIdを渡せるため、1回のクエリで複数の値をまとめて削除することも可能です。配列操作はアプリケーション開発でよく使う処理なので、ぜひ覚えておきましょう。

  1. MongoDBで配列型フィールドの値を除外する方法

    MongoDBで配列型フィールドの値を除外するには? 配列型フィールド内の値(要素の中身)を除外したい場合は、MongoDBのdelete()を使用します。この記事では、実際にコレクションを作成し、配列の各要素から特定のフィールドを削除する手順をサンプルコード付きで解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成しましょう。 > db.demo464.insertOne( ... { ... id : 101, ... details: [ ... { ...

  2. MongoDBでドキュメント内の配列から特定の値を削除する方法($pull演算子の使い方)

    MongoDBで配列から値を削除したい場合は、$pull 演算子を使用します。$pull は、既存の配列から指定した条件に一致する値(または複数の値)のすべてのインスタンスを取り除くための更新演算子です。1. サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。> db.demo535.insertOne( ... { ... studentId : 101, ... studentName : Chris, ... ListOfMailIds : [ ... Chris@gmail.com, ... Chr