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

MongoDBコレクションから配列要素を削除する方法($pull演算子の使い方)

MongoDBで配列から特定の要素を削除したい場合、$pull 演算子を update() メソッドと組み合わせて使うだけで簡単に実現できます。この記事では、実際のコード例を通じて、コレクション内の配列要素を削除する手順をわかりやすく解説します。

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

まず、insertOne() メソッドを使って、従業員名のリストを持つ配列フィールドを含むコレクションを作成します。

> db.demo146.insertOne({"ListOfEmployeeNames":["Chris","David","Bob","Mike"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e32f54ffdf09dd6d08539bd")
}

2. ドキュメントの確認

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

> db.demo146.find();

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

{ "_id" : ObjectId("5e32f54ffdf09dd6d08539bd"), "ListOfEmployeeNames" : [ "Chris", "David", "Bob", "Mike" ] }

3. $pull を使った配列要素の削除

続いて、update() メソッドと $pull 演算子を組み合わせて、配列から「Bob」という要素を削除します。

> db.demo146.update({}, { "$pull": { "ListOfEmployeeNames": "Bob" } });
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

nModified : 1 という結果から、1件のドキュメントが正常に更新されたことが確認できます。

4. 削除結果の確認

再度 find() メソッドを実行し、要素が正しく削除されたかどうかを確認しましょう。

> db.demo146.find();

実行結果:

{ "_id" : ObjectId("5e32f54ffdf09dd6d08539bd"), "ListOfEmployeeNames" : [ "Chris", "David", "Mike" ] }

出力を見ると、「Bob」が配列から正常に削除され、残り3つの名前だけが残っていることがわかります。

補足:$pull 演算子の応用テクニック

$pull は単一の値だけでなく、条件を指定した削除にも対応しています。たとえば、数値配列から10未満の要素をすべて一括で削除することも可能です。

db.collection.update({}, { "$pull": { "scores": { "$lt": 10 } } });

また、複数の具体的な値を一度に削除したい場合には $pullAll 演算子が便利です。なお、MongoDBの新しいバージョンでは、update() の代わりに updateOne()updateMany() の使用が推奨されているため、環境に合わせて適切なメソッドを選択してください。

  1. MongoDBのコレクションからデータを取得する方法(findOne()の使い方)

    MongoDBのコレクションからデータを取得するには?MongoDBでコレクションから単一のドキュメントを取得したい場合は、findOne()メソッドを使用します。本記事では、サンプルコレクションを作成し、その中から特定の条件に一致するデータを取り出すまでの手順を順番に解説します。1. サンプルコレクションの作成まず、insertOne()メソッドを使って、学生情報のドキュメントを複数件持つコレクション「demo463」を作成します。> db.demo463.insertOne({StudentName:Chris Brown,StudentAge:21,StudentCountryNa

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

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