MongoDB में प्रोजेक्शन क्वेरी परिणामों में कौन से फील्ड शामिल/बहिष्कृत करने हैं, नियंत्रित करता है। एक फील्ड शामिल करने के लिए इसे 1 पर सेट करें; बाहर करने के लिए 0 पर सेट करें। _id डिफ़ॉल्ट रूप से शामिल है; इसे बाहर करने के लिए स्पष्ट रूप से _id: 0 सेट करें।
उदाहरण: छात्र दस्तावेज़
> db.demo384.insertOne({"StudentName":"Chris Brown","StudentCountryName":"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b67a022064be7ab44e7f2") }
> db.demo384.insertOne({"StudentName":"David Miller","StudentCountryName":"AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b67ab22064be7ab44e7f3") }
> db.demo384.insertOne({"StudentName":"John Doe","StudentCountryName":"UK"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5b67b422064be7ab44e7f4") }
सभी दस्तावेज़ देखना
> db.demo384.find();
आउटपुट: दोनों फील्ड्स + _id के साथ तीन दस्तावेज़।
केवल StudentCountryName प्रोजेक्ट करें (_id, StudentName बाहर करें)
> db.demo384.find({}, { _id: 0, StudentName: 0 });
आउटपुट:
{ "StudentCountryName" : "US" }
{ "StudentCountryName" : "AUS" }
{ "StudentCountryName" : "UK" }
समतुल्य समावेशी सिंटैक्स
> db.demo384.find({}, { _id: 0, StudentCountryName: 1 });
उसी परिणाम के लिए StudentCountryName: 1 (शामिल करें) का उपयोग करता है।
नियम
- मिश्रण नहीं कर सकते: एक ही प्रोजेक्शन में
1(शामिल) और0(बहिष्कृत) को मिला नहीं सकते,_id: 0के अपवाद के साथ। _idएकमात्र फील्ड है जिसे स्पष्ट रूप से बाहर किया जा सकता है जबकि अन्य शामिल हैं।- नेस्टेड फील्ड्स:
{ "address.city": 1 }। - सरणी प्रोजेक्शन:
$elemMatch,$slice,$।
प्रदर्शन
प्रोजेक्शन नेटवर्क ट्रांसफर और प्रसंस्करण कम करता है। कवर्ड क्वेरी के लिए (जहां सभी क्वेरी और प्रोजेक्टेड फील्ड्स एक इंडेक्स में हैं), MongoDB दस्तावेज़ लुकअप को पूरी तरह से छोड़ देता है।