MongoDB में $unset ऑपरेटर का उपयोग करके फ़ील्ड हटाना
MongoDB में किसी डॉक्यूमेंट के अंदर से किसी विशिष्ट फ़ील्ड या मान को पूरी तरह से हटाने के लिए $unset ऑपरेटर का उपयोग किया जाता है। यह ऑपरेटर फ़ील्ड के मान को null सेट करने के बजाय, फ़ील्ड को डॉक्यूमेंट से पूरी तरह से निकाल देता है।
उदाहरण: संग्रह बनाना और डेटा डालना
सबसे पहले, हम एक डेमो संग्रह demo20 बनाते हैं और उसमें एक डॉक्यूमेंट डालते हैं जिसमें एक नेस्टेड सरणी और एक खाली सरणी फ़ील्ड शामिल है।
> db.demo20.insertOne({
"ListOfEmployee": [
{ "EmployeeName1": "John" },
{ "EmployeeName2": "Carol" }
],
"EmployeeName2": []
});
{
"acknowledged": true,
"insertedId": ObjectId("5e138c3555d0fc6657d21f12")
}
डॉक्यूमेंट देखना
डाले गए डॉक्यूमेंट को देखने के लिए find() मेथड का उपयोग करें।
> db.demo20.find();
आउटपुट:
{
"_id": ObjectId("5e138c3555d0fc6657d21f12"),
"ListOfEmployee": [
{ "EmployeeName1": "John" },
{ "EmployeeName2": "Carol" }
],
"EmployeeName2": []
}
विशिष्ट फ़ील्ड हटाने के लिए क्वेरी
यहां हम $unset का उपयोग करके EmployeeName2 फ़ील्ड को हटा रहे हैं। क्वेरी उन डॉक्यूमेंट्स को ढूंढती है जहां यह फ़ील्ड मौजूद है ($exists: 1)।
> db.demo20.update(
{ "EmployeeName2": { "$exists": 1 }},
{ "$unset": { "EmployeeName2": "" } }
);
WriteResult({ "nMatched": 1, "nUpserted": 0, "nModified": 1 })
परिणाम सत्यापित करना
फिर से find() चलाकर पुष्टि करें कि फ़ील्ड हटा दी गई है।
> db.demo20.find();
आउटपुट:
{
"_id": ObjectId("5e138c3555d0fc6657d21f12"),
"ListOfEmployee": [
{ "EmployeeName1": "John" },
{ "EmployeeName2": "Carol" }
]
}
जैसा कि आप देख सकते हैं, शीर्ष-स्तरीय EmployeeName2 फ़ील्ड (जो एक खाली सरणी थी) अब डॉक्यूमेंट में मौजूद नहीं है, जबकि नेस्टेड सरणी ListOfEmployee के अंदर का ऑब्जेक्ट अप्रभावित रहता है।