MongoDB Aggregation Pipeline-এ ফিল্ড প্রজেকশন
$project স্টেজ ব্যবহার করে ডকুমেন্ট থেকে নির্দিষ্ট ফিল্ড বাদ দেওয়া বা নতুন ফিল্ড যোগ করা যায়। _id: false সেট করে ডিফল্ট _id ফিল্ডটি আউটপুট থেকে বাদ দেওয়া যায়।
নমুনা ডেটা তৈরি
> db.demo226.insertOne({"Name":"Chris","Age":21});
> db.demo226.insertOne({"Name":"Bob","Age":20});
> db.demo226.insertOne({"Name":"David","Age":22});
সকল ডকুমেন্ট দেখানো
> db.demo226.find();
আউটপুট:
{ "_id" : ObjectId(...), "Name" : "Chris", "Age" : 21 }
{ "_id" : ObjectId(...), "Name" : "Bob", "Age" : 20 }
{ "_id" : ObjectId(...), "Name" : "David", "Age" : 22 }
Aggregation Pipeline-এ _id বাদ দিয়ে প্রজেকশন
> db.demo226.aggregate([
{
$project: {
_id: false,
StudentFirstName: "$Name",
StudentAge: "$Age"
}
}
]);
আউটপুট:
{ "StudentFirstName" : "Chris", "StudentAge" : 21 }
{ "StudentFirstName" : "Bob", "StudentAge" : 20 }
{ "StudentFirstName" : "David", "StudentAge" : 22 }
প্রধান পয়েন্টগুলো
_id: falseবা_id: 0—_idফিল্ড বাদ দেয়"StudentFirstName": "$Name"— ফিল্ড রিনেম করে (আপস্ট্রিম ফিল্ডের নাম$দিয়ে রেফারেন্স করতে হয়)- নতুন ফিল্ড যোগ করাও যায়:
computedField: { $concat: ["$Name", " - ", { $toString: "$Age" }] }
ফাইন্ড (find) পদ্ধতিতে প্রজেকশন
সিম্পল কোয়েরিতে find()-এর দ্বিতীয় আর্গুমেন্ট হিসেবে প্রজেকশন দেওয়া যায়:
> db.demo226.find({}, { _id: 0, Name: 1, Age: 1 });
এটি aggregation pipeline-এর চেয়ে সহজ কিন্তু কম শক্তিশালী।