MongoDB में नेस्टेड ऑब्जेक्ट के अंदर सरणी से विशिष्ट तत्व हटाने के लिए, डॉट नोटेशन के साथ $pull ऑपरेटर का उपयोग करें।
उदाहरण: नेस्टेड उपयोगकर्ता जानकारी सरणी वाला दस्तावेज़
> db.demo388.insertOne({
_id: '101',
userDetails: {
isMarried: false,
userInfo: [
{ Name: "Chris", Age: 21 }
]
}
});
{ "acknowledged" : true, "insertedId" : "101" }
दस्तावेज़ देखना
> db.demo388.find();
आउटपुट: एक दस्तावेज़ जिसमें userInfo में एक तत्व है।
हटाएं: Name="Chris" वाले तत्व को userDetails.userInfo से हटाएं
> db.demo388.update(
{ "_id": "101" },
{ $pull: { "userDetails.userInfo": { "Name": "Chris" } } }
);
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
परिणाम जांचें
> db.demo388.find();
आउटपुट: userInfo सरणी अब खाली है।
व्याख्या
$pullसरणी से उन तत्वों को हटाता है जो निर्दिष्ट शर्त से मेल खाते हैं।userDetails.userInfoडॉट नोटेशन के माध्यम से नेस्टेड सरणी को लक्षित करता है।- शर्त
{ "Name": "Chris" }सरणी तत्वों से मेल खाती है जहां Name "Chris" है। - सभी मिलान वाले तत्व हटा दिए जाते हैं (सिर्फ पहला नहीं)।
संबंधित ऑपरेटर
- $pullAll: मानों की सरणी द्वारा हटाएं:
{ $pullAll: { "userDetails.userInfo": [ {Name:"Chris"} ] } }(सटीक ऑब्जेक्ट मिलान)। - $pop: पहला/अंतिम तत्व हटाएं:
{ $pop: { "userDetails.userInfo": 1 } }(अंतिम),-1(पहला)। - स्थिति द्वारा हटाएं:
arrayFiltersके साथ$[identifier]का उपयोग करें।
नोट
$pull सरणी को इन-प्लेस संशोधित करता है; दस्तावेज़ _id अपरिवर्तित रहता है।