MongoDBで配列から要素を削除する方法|$pull演算子の使い方を解説
MongoDBで配列から要素を削除するには?
MongoDBで配列から特定の要素を削除したい場合は、$pull 演算子を使用します。$pull は、指定した条件に一致する値を配列からすべて取り除くことができる更新演算子です。
この記事では、実際にコレクションを作成し、$pull を使って配列から要素を削除するまでの一連の手順をサンプルコード付きで解説します。
1. サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成しましょう。ここでは、技術スタックのリスト(ListOfTechnology)を持つドキュメントを2件挿入します。
> db.demo224.insertOne({"ListOfTechnology":["Spring","Hibernate","Java"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3ee6d103d395bdc2134733")
}
> db.demo224.insertOne({"ListOfTechnology":["Groovy"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e3ee6ec03d395bdc2134734")
}2. ドキュメントの内容を確認する
find() メソッドを使用して、コレクション内のすべてのドキュメントを表示します。
> db.demo224.find();
上記のコマンドを実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5e3ee6d103d395bdc2134733"), "ListOfTechnology" : [ "Spring", "Hibernate", "Java" ] }
{ "_id" : ObjectId("5e3ee6ec03d395bdc2134734"), "ListOfTechnology" : [ "Groovy" ] }3. $pull を使って配列から要素を削除する
以下が、MongoDBの配列から要素を削除するためのクエリです。この例では、ObjectId が「5e3ee6d103d395bdc2134733」のドキュメントを対象に、ListOfTechnology 配列から「Java」を削除しています。
>db.demo224.update({_id:ObjectId("5e3ee6d103d395bdc2134733")},{$pull:{"ListOfTechnology":"Java"}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })実行結果を見ると、「nModified : 1」と表示されており、1件のドキュメントが正常に更新されたことがわかります。
4. 削除後の結果を確認する
もう一度 find() メソッドを実行して、削除後の状態を確認しましょう。
> db.demo224.find();
出力は次のとおりです。「Java」が配列から正常に削除されていることが確認できます。
{ "_id" : ObjectId("5e3ee6d103d395bdc2134733"), "ListOfTechnology" : [ "Spring", "Hibernate" ] }
{ "_id" : ObjectId("5e3ee6ec03d395bdc2134734"), "ListOfTechnology" : [ "Groovy" ] }補足:$pull を使う際のポイント
- 条件に一致する要素はすべて削除される: $pull は、指定した値や条件に一致する配列内の全要素を一度に削除します。
- updateOne() / updateMany() の使用を推奨: 新しいバージョンのMongoDBでは、非推奨となった update() の代わりに updateOne() や updateMany() を使うのが一般的です。
- 条件式も利用可能: 「{ $gt: 5 }」のような比較演算子を組み合わせることで、「5より大きい数値をすべて削除する」といった柔軟な操作も可能です。
このように、$pull 演算子を使えば、MongoDBの配列から特定の要素を簡単かつ確実に削除できます。配列操作が必要なアプリケーション開発において、ぜひ活用してみてください。
-
MongoDBで配列内のサブアイテムを設定・更新する方法:位置演算子$の使い方
MongoDBでは、位置演算子(positional $ 演算子)を使用することで、配列内の特定のサブアイテム(要素)を簡単に更新できます。この記事では、実際のコード例を通じて、配列内のサブアイテムを設定・更新する手順を詳しく解説します。サンプルコレクションの作成まず、insertOne() メソッドを使って、ドキュメントを含むコレクションを作成します。ここでは、商品IDと複数の価格情報を持つ「ProductDetails」配列を含むドキュメントを作成します。> db.demo22.insertOne(... {...
-
MongoDBで配列に要素を追加できない?$push演算子の使い方を解説
MongoDBで配列にプッシュするには MongoDBで配列に要素を追加(プッシュ)したい場合は、$push演算子を使用します。ここでは、実際にドキュメントを含むコレクションを作成し、手順を追いながら解説していきます。 1. コレクションの作成 まず、insertOne()メソッドを使ってサンプルドキュメントを含むコレクションを作成しましょう。 > db.demo445.insertOne({ListOfFriends:[Robert,Mike,Sam,Carol,David,Mike]}); { acknowledged : true, insertedId : Obje