MongoDB-এ অ্যারে ফিল্ড থেকে শুধু প্রথম এলিমেন্ট বের করতে প্রজেকশনে $slice অপারেটর ব্যবহার করুন।
উদাহরণ
অ্যারে অফ অবজেক্টস সহ ডকুমেন্ট তৈরি করুন:
> db.gettingFirstItemInArrayDemo.insertOne({
"UserId": 101,
"UserName": "Carol",
"UserOtherDetails": [
{"UserFriendName": "Sam"},
{"UserFriendName": "Mike"},
{"UserFriendName": "David"},
{"UserFriendName": "Bob"}
]
});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdfca52bf3115999ed51205") }
ডকুমেন্টটি দেখুন:
> db.gettingFirstItemInArrayDemo.find().pretty();
আউটপুট:
{ "_id" : ObjectId("5cdfca52bf3115999ed51205"), "UserId" : 101, "UserName" : "Carol", "UserOtherDetails" : [ { "UserFriendName" : "Sam" }, { "UserFriendName" : "Mike" }, { "UserFriendName" : "David" }, { "UserFriendName" : "Bob" } ] }
শুধু প্রথম এলিমেন্ট বের করা ($slice: 1)
> db.gettingFirstItemInArrayDemo.find({ "UserId": 101 }, { UserOtherDetails: { $slice: 1 } });
আউটপুট:
{ "_id" : ObjectId("5cdfca52bf3115999ed51205"), "UserId" : 101, "UserName" : "Carol", "UserOtherDetails" : [ { "UserFriendName" : "Sam" } ] }
ব্যাখ্যা:
$slice: 1— অ্যারের শুরু থেকে ১টি এলিমেন্ট রিটার্ন করে।- প্রজেকশন অবজেক্টে ফিল্ড নাম দিয়ে
$sliceসেট করা হয়।
বিকল্প (এগ্রিগেশন): $arrayElemAt: ["$UserOtherDetails", 0] — ০ ইনডেক্সের এলিমেন্ট বের করে।
db.gettingFirstItemInArrayDemo.aggregate([
{ $match: { UserId: 101 } },
{ $project: { UserId: 1, UserName: 1, FirstFriend: { $arrayElemAt: ["$UserOtherDetails.UserFriendName", 0] } } }
]);
ফলাফল: { "UserId": 101, "UserName": "Carol", "FirstFriend": "Sam" }