MongoDBで配列のn番目の要素を削除する方法をわかりやすく解説
MongoDBで配列のn番目の要素を削除する方法
MongoDBで配列のn番目の要素を削除したい場合は、更新操作において $unset 演算子と $pull 演算子を組み合わせて使用します。この2つを順番に適用することで、指定した位置の要素を配列から完全に取り除くことができます。
本記事では、実際のコード例を交えながら、具体的な手順を段階的に解説します。
手順1: サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成します。以下のクエリを実行してください。
> db.getNThElementDemo.insertOne({"UserName":"John","UserAge":23,"ListOfFriends":["Carol","Sam","Mike","Bob"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c94ee7516f542d757e2b43e")
}
> db.getNThElementDemo.insertOne({"UserName":"David","UserAge":21,"ListOfFriends":["Chris","Robert"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c94eeaa16f542d757e2b43f")
}手順2: ドキュメントの内容を確認する
find() メソッドを使用して、コレクション内のすべてのドキュメントを表示します。
> db.getNThElementDemo.find().pretty();
出力は以下のとおりです。
{
"_id" : ObjectId("5c94ee7516f542d757e2b43e"),
"UserName" : "John",
"UserAge" : 23,
"ListOfFriends" : [
"Carol",
"Sam",
"Mike",
"Bob"
]
}
{
"_id" : ObjectId("5c94eeaa16f542d757e2b43f"),
"UserName" : "David",
"UserAge" : 21,
"ListOfFriends" : [
"Chris",
"Robert"
]
}手順3: 配列のn番目の要素を削除する
配列のn番目の要素を削除するには、まず $unset 演算子で該当位置の要素を null に置き換え、その後 $pull 演算子で null 値を配列から取り除きます。以下のクエリを実行します。
> db.getNThElementDemo.update({}, {$unset : {"ListOfFriends.2" : 1 }});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.getNThElementDemo.update({}, {$pull : {"ListOfFriends" : null}});
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })ここで重要なポイントは、$unset だけでは要素が null に置き換えられるだけで、配列からは削除されないという点です。そのため、続けて $pull で null 値を取り除く必要があります。上記の例では「ListOfFriends.2」を指定しているため、インデックス2(3番目)の要素である「Mike」が削除対象となります。
手順4: 削除結果を確認する
再度 find() メソッドを実行し、n番目の要素が正しく削除されたことを確認しましょう。
> db.getNThElementDemo.find().pretty();
出力は以下のとおりです。
{
"_id" : ObjectId("5c94ee7516f542d757e2b43e"),
"UserName" : "John",
"UserAge" : 23,
"ListOfFriends" : [
"Carol",
"Sam",
"Bob"
]
}
{
"_id" : ObjectId("5c94eeaa16f542d757e2b43f"),
"UserName" : "David",
"UserAge" : 21,
"ListOfFriends" : [
"Chris",
"Robert"
]
}このように、John のドキュメントの ListOfFriends から「Mike」が削除され、残りの要素が詰められていることが確認できます。なお、上記の例では条件を空のオブジェクト {} としているため、最初にマッチしたドキュメントのみが更新されます。特定のドキュメントだけを更新したい場合は、update() の第一引数に条件(例: {"UserName": "John"})を指定してください。
-
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