MongoDBの配列から要素を削除する方法:$pull演算子の使い方
MongoDBでドキュメント内の配列から特定の要素を削除したい場合は、更新演算子の $pull を使用します。この記事では、実際のコード例を使いながら、$pullによる配列要素の削除手順をわかりやすく解説します。
1. サンプルコレクションの作成
まず、insertOne() メソッドを使って、数値の配列を持つドキュメントを含むコレクションを作成します。
> db.demo279.insertOne({id:[101,103,105,110]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e490af7dd099650a5401a58")
}
> db.demo279.insertOne({id:[107,111,110]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e490b06dd099650a5401a59")
}2. ドキュメントの内容を確認する
find() メソッドを使って、コレクション内のすべてのドキュメントを表示してみましょう。
> db.demo279.find();
実行すると、次のような出力が得られます。両方のドキュメントに値 110 が含まれているのが確認できます。
{ "_id" : ObjectId("5e490af7dd099650a5401a58"), "id" : [ 101, 103, 105, 110 ] }
{ "_id" : ObjectId("5e490b06dd099650a5401a59"), "id" : [ 107, 111, 110 ] }3. $pull を使って配列から要素を削除する
ここで、$pull 演算子を使って、すべてのドキュメントの id 配列から値 110 を削除します。{multi:true} オプションを指定することで、条件に一致した複数のドキュメントに対して一括で更新を適用できます。
> db.demo279.update({},{$pull:{id:110}},{multi:true});
WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })nMatched: 2、nModified: 2 と出力されていることから、2件のドキュメントが一致し、両方が正常に更新されたことがわかります。
4. 削除後の結果を確認する
再度 find() メソッドを実行して、削除後のドキュメントを確認しましょう。
> db.demo279.find();
実行結果は以下の通りです。どちらのドキュメントからも値 110 が取り除かれています。
{ "_id" : ObjectId("5e490af7dd099650a5401a58"), "id" : [ 101, 103, 105 ] }
{ "_id" : ObjectId("5e490b06dd099650a5401a59"), "id" : [ 107, 111 ] }補足:updateMany() の利用を推奨
MongoDB 4.2以降では、update() メソッドは非推奨(deprecated)となっており、代わりに updateMany() の使用が推奨されています。上記と同じ処理は次のように書けます。
> db.demo279.updateMany({},{$pull:{id:110}});updateMany() はデフォルトで一致したすべてのドキュメントを更新するため、{multi:true} オプションを明示的に指定する必要がありません。
まとめ
- 配列から特定の値を削除するには
$pull演算子を使用する。 - 複数のドキュメントにまとめて適用したい場合は
{multi:true}(またはupdateMany())を利用する。 $pullは条件式にも対応しているため、たとえば「10より大きい値をすべて削除」のような柔軟な操作も可能。
$pull を使いこなせば、MongoDBの配列操作が格段に楽になります。ぜひ実際のプロジェクトでも活用してみてください。
-
MongoDBで配列の要素を削除するには?$pull演算子の使い方を解説
MongoDBで配列から要素を削除する基本MongoDBで配列内の要素を削除したい場合は、$pull演算子を使用します。$pullは、既存の配列から指定した値、または条件に一致するすべてのインスタンスを取り除くための更新演算子です。この記事では、実際にコレクションを作成し、ネストされた配列から特定の要素を削除する手順を順番に解説します。サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。ここでは「software」フィールドの中に「services」という配列を持つドキュメントを挿入します。db.demo541.insertOne({software:{servic
-
C#の配列から要素を削除する方法【サンプルコード付きで解説】
C#の配列は固定長のため、要素を直接「削除」することはできません。そこで一般的に用いられるのが、削除したい位置以降の要素を一つ前へずらす(シフトする)ことで、実質的にその要素を取り除く手法です。 基本的な考え方:要素をシフトして削除する まず、次のように5つの要素を持つ配列を用意します。 int[] arr = new int[5] {35, 50, 55, 77, 98}; たとえば2番目の位置(pos = 2、つまり arr[1])の要素「50」を削除したい場合は、その位置より後ろにある要素をすべて一つずつ前に移動させます。 // 削除位置以降の要素を前方へシフト for (i