MongoDB-এ অ্যারে অফ অবজেক্টস থেকে নির্দিষ্ট ফিল্ড (যেমন ২য় এলিমেন্টের কান্ট্রি নাম) বের করতে এগ্রিগেশন পাইপলাইনে $project এবং $arrayElemAt অপারেটর ব্যবহার করুন।
উদাহরণ
অ্যারে অফ অবজেক্টস সহ ডকুমেন্ট তৈরি করুন:
> db.returnSpecificFieldDemo.insertOne({
"StudentId": 1,
"StudentDetails": [
{ "StudentName": "Larry", "StudentAge": 21, "StudentCountryName": "US" },
{ "StudentName": "Chris", "StudentAge": 23, "StudentCountryName": "AUS" }
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5ce23d3236e8b255a5eee943") }
ডকুমেন্টটি দেখুন:
> db.returnSpecificFieldDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5ce23d3236e8b255a5eee943"), "StudentId" : 1, "StudentDetails" : [ { "StudentName" : "Larry", "StudentAge" : 21, "StudentCountryName" : "US" }, { "StudentName" : "Chris", "StudentAge" : 23, "StudentCountryName" : "AUS" } ] }
২য় এলিমেন্টের (ইনডেক্স ১) StudentCountryName বের করা
> db.returnSpecificFieldDemo.aggregate([
{ $project: {
_id: 0,
StudentId: "$StudentId",
StudentCountryName: { $arrayElemAt: [ "$StudentDetails.StudentCountryName", 1 ] }
} }
]);
আউটপুট:
{ "StudentId" : 1, "StudentCountryName" : "AUS" }
ব্যাখ্যা:
$StudentDetails.StudentCountryName— অ্যারেতে সব অবজেক্টেরStudentCountryNameফিল্ডগুলো বের করে একটি অ্যারে বানায়:["US", "AUS"]।$arrayElemAt: [ ..., 1 ]— সেই অ্যারেতে ১ নম্বর ইনডেক্স (২য় এলিমেন্ট) বের করে:"AUS"।_id: 0— _id বাদ দেওয়া হয়েছে।
অন্য उपयोगী অপারেটর:
$first— প্রথম এলিমেন্ট (অ্যারে সরাসরি না হলে$arrayElemAtসাথে ০)।$last— শেষ এলিমেন্ট।$slice— রেঞ্জ বের করতে।