MongoDBでコレクションから配列要素を削除するクエリ($pull演算子の使い方)
MongoDBでは、$pull 演算子を使うことで、コレクション内のドキュメントが持つ配列から特定の要素を取り除くことができます。この記事では、実際にコレクションを作成し、$pull 演算子で配列要素を削除するまでの手順をサンプルコードとともに解説します。
$pull演算子とは
$pull は更新演算子の一つで、指定した条件に一致する値を配列からすべて削除します。基本的な構文は以下の通りです。
{ $pull: { フィールド名: 削除したい値 } }サンプルコレクションの作成
まず、insertOne() メソッドを使って、ドキュメントを含むコレクションを作成しましょう。
> db.pullElementFromAnArrayDemo.insertOne(
... {
... "StudentScores":[89,56,78,90]
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd0104a588d4a6447b2e063")
}登録済みドキュメントの確認
find() メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.pullElementFromAnArrayDemo.find();
実行すると、次のような出力が得られます。
{ "_id" : ObjectId("5cd0104a588d4a6447b2e063"), "StudentScores" : [ 89, 56, 78, 90 ] }$pull演算子で配列要素を削除する
それでは、$pull 演算子を使って配列から要素を取り除いてみましょう。ここでは、値「78」を削除します。
> db.pullElementFromAnArrayDemo.update({},{ $pull: { StudentScores: 78 } });
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })なお、MongoDBの新しいバージョンでは、update() の代わりに updateOne() や updateMany() の使用が推奨されています。目的に応じて適切なメソッドを選択してください。
削除後のドキュメントを確認
もう一度 find() メソッドでドキュメントを確認してみましょう。
> db.pullElementFromAnArrayDemo.find();
実行すると、次のように値「78」が取り除かれた配列が出力されます。
{ "_id" : ObjectId("5cd0104a588d4a6447b2e063"), "StudentScores" : [ 89, 56, 90 ] }まとめ
$pull 演算子を使えば、条件に一致する配列要素を簡単に削除できます。条件式を組み合わせれば複数の値や特定のパターンに一致する要素も削除できるため、配列の柔軟な操作が可能になります。ぜひ实际の開発でも活用してみてください。
-
MongoDBで配列から複数の値を一括削除する方法:$pull演算子とmultiオプションの使い方
配列から値を取り除く(プルする)には、$pull 演算子を使用し、multi: true を設定します。multi オプションを有効にすることで、条件に一致したすべてのドキュメントに対して同時に更新を適用できます。本記事では、実際にコレクションを作成し、$pull を使って複数のドキュメントの配列から特定の値を一括削除する手順を解説します。サンプルコレクションの作成まずは、ドキュメントを含むコレクションを作成しましょう。> db.demo392.insertOne( ... { ... Name: Chris, ... details: [ ...
-
MongoDBでコレクションから配列フィールド全体を削除するクエリの書き方
MongoDBで配列フィールドを完全に削除するにはMongoDBのコレクションから、ドキュメント内の配列フィールドそのもの(フィールドごと)を取り除きたい場合は、更新演算子の $unset を使用します。$unset は指定したフィールドをドキュメントから削除する演算子で、配列の中身だけを空にするのではなく、フィールド自体が存在しない状態にできます。ここでは、サンプルコレクションを作成して、実際に配列フィールドを削除する手順を見ていきましょう。1. サンプルコレクションの作成まず、insertOne() メソッドを使ってドキュメントを挿入し、テスト用のコレクション demo609 を作成します