MongoDBで配列から要素を削除する方法:$pull演算子の使い方
MongoDBの配列から要素を削除するには
MongoDBでドキュメント内の配列から特定の要素を取り除きたい場合は、$pull演算子を使用します。$pullは、指定した条件に一致する値を配列からすべて削除できる便利な更新演算子です。
この記事では、実際にコレクションを作成し、$pull演算子を使って配列から要素を削除する手順を順番に解説します。
1. サンプルコレクションの作成
まず、insertOne()メソッドを使ってドキュメントを含むコレクションを作成します。
> db.removeItemFromArray.insertOne(
{ "_id":101, "StudentName":"Larry", "StudentSubjects":["C","MongoDB","Java","MySQL"] } );
{ "acknowledged" : true, "insertedId" : 101 }この例では、学生「Larry」の履修科目リスト(StudentSubjects)を持つドキュメントを挿入しました。
2. ドキュメントの確認
find()メソッドを使って、コレクション内のすべてのドキュメントを表示してみましょう。
> db.removeItemFromArray.find().pretty();
上記のクエリを実行すると、次のような出力が得られます。
{
"_id" : 101,
"StudentName" : "Larry",
"StudentSubjects" : [
"C",
"MongoDB",
"Java",
"MySQL"
]
}3. $pull演算子で配列から要素を削除する
それでは、update()メソッドと$pull演算子を組み合わせて、配列から「Java」を削除してみます。
> db.removeItemFromArray.update(
... { },
... { $pull: {StudentSubjects:"Java" } },
... { multi: true }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })このクエリでは、第2引数に$pullを指定して「Java」を削除しています。また、第3引数の{ multi: true }により、条件に一致したすべてのドキュメントが更新対象になります。実行結果を見ると、1件のドキュメントがマッチし、1件が更新されたことがわかります。
4. 削除後の結果を確認
「Java」が正しく削除されたかどうか、再度find()メソッドでドキュメントを表示して確認しましょう。
> db.removeItemFromArray.find().pretty();
実行すると、次のように「Java」が取り除かれた配列が表示されます。
{
"_id" : 101,
"StudentName" : "Larry",
"StudentSubjects" : [
"C",
"MongoDB",
"MySQL"
]
}まとめ
MongoDBで配列から要素を削除するには、$pull演算子を使うのが最も簡単な方法です。単一の値だけでなく、条件式を指定すれば複数の一致要素をまとめて削除することも可能です。なお、最新のMongoDBではupdate()メソッドの代わりにupdateMany()やupdateOne()を使用することが推奨されているため、実運用では状況に応じて適切なメソッドを選択してください。
-
MongoDBで配列内の一意(ユニーク)な要素を取得するには?distinct()メソッドの使い方
MongoDBで配列から一意(ユニーク)な要素を取得する方法 配列フィールドに含まれる重複した値を取り除き、一意な要素だけを抽出したい場合には、distinct()メソッドを使用します。この記事では、実際のコード例を通じて、その具体的な使い方をわかりやすく解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使って、国名の配列を持つドキュメントをコレクションに挿入しましょう。 > db.demo588.insertOne({CountryName:[US,AUS,UK,US,UK,AUS]}); { acknowledged : true, ins
-
MongoDBでコレクションから配列フィールド全体を削除するクエリの書き方
MongoDBで配列フィールドを完全に削除するにはMongoDBのコレクションから、ドキュメント内の配列フィールドそのもの(フィールドごと)を取り除きたい場合は、更新演算子の $unset を使用します。$unset は指定したフィールドをドキュメントから削除する演算子で、配列の中身だけを空にするのではなく、フィールド自体が存在しない状態にできます。ここでは、サンプルコレクションを作成して、実際に配列フィールドを削除する手順を見ていきましょう。1. サンプルコレクションの作成まず、insertOne() メソッドを使ってドキュメントを挿入し、テスト用のコレクション demo609 を作成します