MongoDB में, आप $unset . का उपयोग कर सकते हैं किसी दस्तावेज़ से फ़ील्ड को पूरी तरह से हटाने के लिए फ़ील्ड अपडेट ऑपरेटर।
$unset ऑपरेटर को विशेष रूप से दस्तावेज़ से किसी फ़ील्ड और उसके मूल्य को हटाने के लिए डिज़ाइन किया गया है।
उदाहरण
मान लीजिए हमारे पास dogs . नामक संग्रह है निम्नलिखित दस्तावेजों के साथ:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
और मान लीजिए कि हम type . को हटाना चाहते हैं सभी दस्तावेजों से फ़ील्ड (और इसके संबंधित मूल्य)।
हम यह कर सकते हैं:
db.dogs.updateMany(
{ },
{ $unset: { type: "" } }
) आउटपुट:
{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 } यह हमें बताता है कि चार दस्तावेज़ मेल खाते हैं (क्योंकि हमने पहले तर्क के रूप में एक खाली क्वेरी दस्तावेज़ का उपयोग किया था) और चार अपडेट किए गए थे।
आइए अब संग्रह को फिर से देखें:
db.dogs.find() परिणाम:
{ "_id" : 1, "name" : "Wag", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "weight" : 30 }
हम देख सकते हैं कि type प्रत्येक दस्तावेज़ से फ़ील्ड को पूरी तरह से हटा दिया गया है।
ध्यान दें कि $unset . में निर्दिष्ट मान एक्सप्रेशन (यानी "") ऑपरेशन को प्रभावित नहीं करता है।
एकाधिक फ़ील्ड हटाएं
आप एक से अधिक फ़ील्ड को अल्पविराम से अलग करके निकालने के लिए निर्दिष्ट कर सकते हैं।
उदाहरण:
db.dogs.updateMany(
{ },
{ $unset: { name: "", weight: "" } }
) आउटपुट:
{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 } संग्रह की जाँच करें:
db.dogs.find() परिणाम:
{ "_id" : 1 }
{ "_id" : 2 }
{ "_id" : 6 }
{ "_id" : 7 }
अब केवल _id फ़ील्ड बचे हैं।
एम्बेडेड दस्तावेज़
एम्बेड किए गए दस्तावेज़ों से फ़ील्ड हटाने के लिए आप डॉट नोटेशन का उपयोग कर सकते हैं।
मान लीजिए हमारे पास pets . नामक संग्रह है निम्नलिखित दस्तावेज़ के साथ:
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20,
"awards" : {
"Florida Dog Awards" : "Top Dog",
"New York Marathon" : "Fastest Dog",
"Sumo 2020" : "Biggest Dog"
}
}
}
और मान लीजिए कि हम awards को हटाना चाहते हैं दस्तावेज़ से फ़ील्ड।
हम यह कर सकते हैं:
db.pets.updateMany(
{ _id: 1 },
{ $unset: { "details.awards": "" } }
) आउटपुट:
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 } अब दस्तावेज़ की जाँच करें:
db.pets.findOne() परिणाम:
{
"_id" : 1,
"name" : "Wag",
"details" : {
"type" : "Dog",
"weight" : 20
}
}
awards फ़ील्ड और उसका मूल्य (जो स्वयं एक एम्बेडेड दस्तावेज़ था) को दस्तावेज़ से हटा दिया गया है।