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();
আউটপুট:
{
"_id": 101,
"Product": {
"description1": { "id": 1001 },
"description2": { "Name": "Product-1" },
"description3": { "Price": 550 }
}
}
description1 এবং description3 বাদ দিয়ে বাকি রিটার্ন (এক্সক্লুশন)
> db.demo237.find({}, { "Product.description1": 0, "Product.description3": 0 });
ফলাফল
{ "_id": 101, "Product": { "description2": { "Name": "Product-1" } } }
ব্যাখ্যা:
0মান দিয়ে ফিল্ড এক্সক্লুড করা হয়।Product.description1এবংProduct.description3বাদ দেওয়া হয়েছে।Product.description2এবং_id(ডিফল্ট ইনক্লুড) রিটার্ন হয়েছে।
শুধু description2 রিটার্ন (ইনক্লুশন)
db.demo237.find({}, { "Product.description2": 1, _id: 0 });
ফলাফল: { "Product": { "description2": { "Name": "Product-1" } } }
গভীর নেস্টেড ফিল্ড প্রজেকশন
db.demo237.find({}, { "Product.description2.Name": 1, _id: 0 });
ফলাফল: { "Product": { "description2": { "Name": "Product-1" } } } (অবজেক্ট স্ট্রাকচার বজায় থাকে)।
সতর্কতা: ইনক্লুড/এক্সক্লুড মিক্স
_id বাদ দিয়ে আপনি একই ডকুমেন্টে ইনক্লুড (১) এবং এক্সক্লুড (০) মিক্স করতে পারবেন না। তবে নেস্টেড লেভেলে আলাদা ফিল্ডের জন্য আলাদা মোড ব্যবহার করা যায় (যেমন উপরের উদাহরণে)।