MongoDB में क्वेरी परिणाम से केवल वांछित फील्ड प्राप्त करने के लिए find() के दूसरे आर्गुमेंट (प्रोजेक्शन) में फील्ड को 1 (या true) सेट करें।
उदाहरण
दस्तावेज़ बनाएं:
> db.querySelectDemo.insertOne({UserId: 100, UserName: "Chris", UserAge: 25});
{ "acknowledged" : true, "insertedId" : ObjectId("5ce90eb478f00858fb12e90e") }
> db.querySelectDemo.insertOne({UserId: 101, UserName: "Robert", UserAge: 26});
{ "acknowledged" : true, "insertedId" : ObjectId("5ce90ec578f00858fb12e90f") }
> db.querySelectDemo.insertOne({UserId: 103, UserName: "David", UserAge: 27});
{ "acknowledged" : true, "insertedId" : ObjectId("5ce90ed478f00858fb12e910") }
सभी दस्तावेज़ देखें:
> db.querySelectDemo.find().pretty();
{ "_id" : ObjectId("5ce90eb478f00858fb12e90e"), "UserId" : 100, "UserName" : "Chris", "UserAge" : 25 }
{ "_id" : ObjectId("5ce90ec578f00858fb12e90f"), "UserId" : 101, "UserName" : "Robert", "UserAge" : 26 }
{ "_id" : ObjectId("5ce90ed478f00858fb12e910"), "UserId" : 103, "UserName" : "David", "UserAge" : 27 }
केवल UserName फील्ड प्राप्त करें (_id बाहर करें)
> db.querySelectDemo.find({}, {_id: 0, UserName: true});
आउटपुट:
{ "UserName" : "Chris" }
{ "UserName" : "Robert" }
{ "UserName" : "David" }
प्रोजेक्शन नियम:
field: 1याfield: true- फील्ड शामिल करेंfield: 0याfield: false- फील्ड बाहर करें_idडिफ़ॉल्ट रूप से शामिल होता है - बाहर करने के लिए_id: 0स्पष्ट करें- शामिल और बाहर करने को मिश्रित नहीं कर सकते (केवल _id अपवाद)
नेस्टेड फील्ड प्रोजेक्शन
// नेस्टेड ऑब्जेक्ट का फील्ड
db.collection.find({}, {"address.city": 1, _id: 0})
// सरणी का फील्ड
db.collection.find({}, {"items.name": 1, _id: 0})
एग्रीगेशन में $project
db.collection.aggregate([
{$project: {_id: 0, UserName: 1, UserAge: 1}}
])
एग्रीगेशन अधिक शक्तिशाली है - गणना किए गए फील्ड, नाम बदलना, पुनर्गठन कर सकता है।