MongoDB-এ find() মেথডের দ্বিতীয় আর্গুমেন্ট (প্রজেকশন) ব্যবহার করে নির্দিষ্ট ফিল্ডই রিটার্ন করা এবং অন্যগুলো বাদ দেওয়া যায়।
কলেকশন এবং ডকুমেন্ট তৈরি
> db.demo216.insertOne({"ClientName":"John","ClientAge":34});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e351003d395bdc213470c") }
> db.demo216.insertOne({"ClientName":"Bob","ClientAge":32});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e351703d395bdc213470d") }
> db.demo216.insertOne({"ClientName":"Mike","ClientAge":35});
{ "acknowledged" : true, "insertedId" : ObjectId("5e3e351c03d395bdc213470e") }
সব ডকুমেন্ট দেখানো
> db.demo216.find();
আউটপুট:
{ "_id" : ObjectId("5e3e351003d395bdc213470c"), "ClientName" : "John", "ClientAge" : 34 }
{ "_id" : ObjectId("5e3e351703d395bdc213470d"), "ClientName" : "Bob", "ClientAge" : 32 }
{ "_id" : ObjectId("5e3e351c03d395bdc213470e"), "ClientName" : "Mike", "ClientAge" : 35 }
একমাত্র কলাম প্রজেক্ট করার কোয়ারী
_id: 0 দিয়ে _id বাদ দেওয়া এবং ClientAge: 0 দিয়ে ClientAge বাদ দেওয়া হয়েছে - অর্থাৎ শুধু ClientName রিটার্ন হবে:
> db.demo216.find({}, {_id: 0, "ClientAge": 0});
ফলাফল
{ "ClientName" : "John" }
{ "ClientName" : "Bob" }
{ "ClientName" : "Mike" }
প্রজেকশন নিয়ম:
1বাtrue- ফিল্ড ইনক্লুড করবে0বাfalse- ফিল্ড এক্সক্লুড করবে_idডিফল্টে ইনক্লুড থাকে, বাদ দিতে_id: 0লিখতে হয়- মিক্স করা যায় না (শুধু _id বাদে): είদি সব ইনক্লুড বা সব এক্সক্লুড
বিকল্প সিনট্যাক্স (ইনক্লুড মোড):
db.demo216.find({}, {_id: 0, ClientName: 1})
// ফলাফল একই: শুধু ClientName
নেস্টেড ফিল্ড প্রজেকশন:
db.demo216.find({}, {_id: 0, "Details.Name": 1})
অ্যাগ্রিগেশনে $project:
db.demo216.aggregate([
{ $project: { _id: 0, ClientName: 1 } }
])
ব্যবহার ক্ষেত্র: নেটওয়ার্ক ট্রাফিক কমানো, সিকিউরিটি (সেনসিটিভ ফিল্ড হাইড), ক্লায়েন্ট-সাইড প্রসেসিং সহজ করা।