MongoDB $Pull を使用して、アレイ内のドキュメントを削除する
$pull
演算子は、配列から既存のアイテムをフェッチできます。配列から 1つ以上の要素をプルできます。
ネストされた配列から特定のオブジェクトを削除できます。
MongoDB $pull
演算子
$pull
は、配列から既存の要素を削除するために MongoDB で使用されます。 $pull
は update
クエリで使用されます。
これが例です。以下を挿入しました。
db.cart.insertMany( [
{
_id: 1,
grocery:["biscuits", "oil", "honey", "milk", "paper"],
electronics:["earphone", "bluetooth", "mouse", "keyboard"]
},
{
_id: 2,
grocery:["biscuits", "oil", "soda", "water", "paper"],
electronics:["pendrive", "motherboard", "mouse", "SSD"]
}
] )
これが 2つのショッピングカートです。紙
、SSD
、またはマウス
の在庫がない場合を考えてみましょう。
したがって、これらの製品をショッピングカートから削除する必要があります。次に、$pull
演算子を使用して次のクエリを使用できます。
db.cart.updateMany({},
{
$pull:{ grocery: "paper", electronics:{ $in:[ "SSD","mouse" ] } }
}
)
$in
演算子は、各要素をドキュメントと照合するために配列を取ります。この操作の後、コレクションは次のようになります。
{
_id: 1,
grocery:["biscuits", "oil", "honey", "milk"],
electronics:["earphone", "bluetooth", "keyboard"]
},
{
_id: 2,
grocery:["biscuits", "oil", "soda", "water"],
electronics:["pendrive", "motherboard"]
}
MongoDB $pull
条件付きコマンド
次のドキュメントがあると仮定します。
{
_id: 1,
price: [ 31, 50, 55, 66, 98, 25 ]
},
{
_id: 2,
price: [ 51, 55, 65, 91, 19, 26 ]
},
ここで、値が 50 より大きい price
配列の要素を削除します。コマンドは次のようになります。
db.products.updateMany(
{},
{ $pull: { price:{ $gte : 50} } }
)
updateMany
の最初のパラメータとして {}
を使用したことがわかります。これは、すべての要素を更新するためです。
特定の _id
のみを更新したい場合、コマンドは次のようになります。
db.products.updateMany(
{_id: 1},
{ $pull: { price:{ $gte : 50} } }
)
_id
の $in
演算子を使用して、複数の _id
を選択し、更新して pull
操作を使用することもできます。
ネストされた配列で $pull
を使用する
次のドキュメントのコレクションがあるとします。
db.survey.drop()
db.survey.insertMany( [
{
_id: 1,
results: [
{
item: "A",
score: 5,
answers: [ { q: 1, a: 4 }, { q: 2, a: 6 } ]
},
{
item: "B",
score: 8,
answers: [ { q: 1, a: 8 }, { q: 2, a: 9 } ]
}
]
},
{
_id: 2,
results: [
{
item: "C",
score: 8,
answers: [ { q: 1, a: 8 }, { q: 2, a: 7 } ]
},
{
item: "B",
score: 4,
answers: [ { q: 1, a: 0 }, { q: 2, a: 8 } ]
}
]
}
] )
q
が 2 で、a
が 8 より大きい results
配列からこれらの項目を削除します。クエリは次のようになります。
db.survey.updateMany(
{ },
{
$pull:
{
results:
{
answers: { $elemMatch: { q: 2, a: { $gte: 8 } } }
}
}
}
)
この操作の後、更新されたコレクションは次のようになります。
{
_id: 1,
results: [
{
item: 'A',
score: 5,
answers: [ { q: 1, a: 4 }, { q: 2, a: 6 } ]
}
]
},
{
_id: 2,
results: [
{
item: 'C',
score: 8,
answers: [ { q: 1, a: 8 }, { q: 2, a: 7 } ]
}
]
}
このネストされた配列の例は、MongoDB の公式ドキュメントから抜粋したものです。ここ完全なドキュメントを読んで、$pull
演算子について詳しく知ることができます。