MongoDB में $pull ऑपरेटर से ऐरे के ऑब्जेक्ट एलिमेंट हटाना
$pull ऑपरेटर ऐरे से उन एलिमेंट को हटाता है जो निर्दिष्ट कंडीशन से मैच करते हैं। जब ऐरे एलिमेंट डॉक्यूमेंट (ऑब्जेक्ट) हों, तो मैच कंडीशन में फ़ील्ड निर्दिष्ट करें।
कलेक्शन बनाएं और डॉक्यूमेंट इन्सर्ट करें
> db.pullAnArrayElementDemo.insertOne({
"StudentDetails": [
{"StudentFirstName": "Chris", "StudentScore": 56},
{"StudentFirstName": "Robert", "StudentScore": 59}
]
});
{ "acknowledged": true, "insertedId": ObjectId("5cd3b55bedc6604c74817cd5") }
डॉक्यूमेंट देखें
> db.pullAnArrayElementDemo.find().pretty();
{
"_id": ObjectId("5cd3b55bedc6604c74817cd5"),
"StudentDetails": [
{"StudentFirstName": "Chris", "StudentScore": 56},
{"StudentFirstName": "Robert", "StudentScore": 59}
]
}
StudentFirstName = "Chris" वाला एलिमेंट हटाएं
> db.pullAnArrayElementDemo.update(
{},
{$pull: {'StudentDetails': {'StudentFirstName': 'Chris'}}}
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
हटाने के बाद चेक करें
> db.pullAnArrayElementDemo.find().pretty();
{
"_id": ObjectId("5cd3b55bedc6604c74817cd5"),
"StudentDetails": [
{"StudentFirstName": "Robert", "StudentScore": 59}
]
}
व्याख्या
{}- खाली क्वेरी (पहला डॉक्यूमेंट)$pull: {StudentDetails: {StudentFirstName: "Chris"}}- StudentDetails ऐरे में जहां StudentFirstName "Chris" हो, वह एलिमेंट हटाएं- मल्टीपल मैच होने पर सभी हट जाते हैं
वेरिएशन
// एकाधिक कंडीशन (AND)
{$pull: {StudentDetails: {StudentFirstName: "Chris", StudentScore: {$gt: 50}}}}
// $in से कई वैल्यू
{$pull: {StudentDetails: {StudentFirstName: {$in: ["Chris", "Robert"]}}}}
// सभी डॉक्यूमेंट से हटाएं (multi: true)
db.collection.updateMany({}, {$pull: {StudentDetails: {StudentFirstName: "Chris"}}})