MongoDB प्रोजेक्शन में नेस्टेड फ़ील्ड्स को शामिल/बहिष्कृत करना
MongoDB में find() के दूसरे पैरामीटर (प्रोजेक्शन) का उपयोग करके आप नेस्टेड दस्तावेज़ों के विशिष्ट फ़ील्ड्स को शामिल या बहिष्कृत कर सकते हैं।
सैंपल डेटा बनाना
> db.demo237.insertOne({
_id: 101,
Product: {
description1: { id: 1001 },
description2: { Name: "Product-1" },
description3: { Price: 550 }
}
});
{ "acknowledged" : true, "insertedId" : 101 }
दस्तावेज़ देखना (सभी फ़ील्ड्स)
> db.demo237.find().pretty();
आउटपुट:
प्रोजेक्शन: description1 और description3 को बहिष्कृत करें
> db.demo237.find({}, { "Product.description1": 0, "Product.description3": 0 });आउटपुट (केवल description2 बचा):
महत्वपूर्ण नियम
- 0 = बहिष्कृत करें, 1 = शामिल करें
- _id को छोड़कर, आप एक ही क्वेरी में शामिल और बहिष्कृत नहीं कर सकते
- नेस्टेड फ़ील्ड्स के लिए डॉट नोटेशन का उपयोग करें:
"Parent.Child" - यदि पैरेंट ऑब्जेक्ट के सभी चाइल्ड्स बहिष्कृत हैं, तो पैरेंट ऑब्जेक्ट खाली ऑब्जेक्ट
{}के रूप में दिखेगा
वैकल्पिक: केवल वांछित फ़ील्ड्स शामिल करें
> db.demo237.find({}, { "Product.description2": 1, _id: 0 });
आउटपुट: { "Product" : { "description2" : { "Name" : "Product-1" } } }
एग्रीगेशन में $project का उपयोग
अधिक जटिल ट्रांसफॉर्मेशन के लिए:
> db.demo237.aggregate([
{ $project: {
_id: 0,
ProductName: "$Product.description2.Name"
}}
]);