MongoDB-এ অ্যারের শেষ (last) এলিমেন্টে কোয়ারি চালাতে অ্যাগ্রিগেশন পাইপলাইনে $arrayElemAt অপারেটর ব্যবহার করা হয়। নেতিবাচক إندেক্স (-1) দিয়ে শেষ এলিমেন্ট অ্যাক্সেস করা যায়।
কলেকশন এবং ডকুমেন্ট তৈরি
> db.demo103.insertOne({
... "Details" : [
... { "StudentId" : 101, "Details" : "MongoDB" },
... { "StudentId" : 102, "Details" : "MySQL" },
... { "StudentId" : 103, "Details" : "Java" }
... ],
... "Details1" : [ { "StudentId" : 104, "Number" : 3 } ]
... });
{ "acknowledged" : true, "insertedId" : ObjectId("5e2ed2dd9fd5fd66da21446e") }
সব ডকুমেন্ট দেখানো
> db.demo103.find();
আউটপুট:
{ "_id" : ObjectId("5e2ed2dd9fd5fd66da21446e"), "Details" : [ { "StudentId" : 101, "Details" : "MongoDB" }, { "StudentId" : 102, "Details" : "MySQL" }, { "StudentId" : 103, "Details" : "Java" } ], "Details1" : [ { "StudentId" : 104, "Number" : 3 } ] }
অ্যারের শেষ এলিমেন্টে কোয়ারী
> db.demo103.aggregate([
... { $project: {
... Details1: 1,
... Details: { $arrayElemAt: ["$Details", -1] }
... }},
... { $match: { "Details.StudentId": 103 } }
... ]);
ফলাফল
{ "_id" : ObjectId("5e2ed2dd9fd5fd66da21446e"), "Details1" : [ { "StudentId" : 104, "Number" : 3 } ], "Details" : { "StudentId" : 103, "Details" : "Java" } }
ব্যাখ্যা:
$arrayElemAt: ["$Details", -1]-Detailsঅ্যারের শেষ এলিমেন্ট (ইন্ডেক্স -১) বের করে$project- আউটপুট স্ট্রাকচার তৈরি:Details1রাখা এবংDetailsтеперь অবজেক্ট (অ্যারে নয়)$match- শেষ এলিমেন্টেরStudentId: 103ফিল্টার
অন্যান্য=arrayElemAt উদাহরণ:
{$arrayElemAt: ["$array", 0]}- প্রথম এলিমেন্ট{$arrayElemAt: ["$array", 2]}- তৃতীয় এলিমেন্ট (০-ভিত্তিক){$arrayElemAt: ["$array", -2]}- শেষ থেকে দ্বিতীয় এলিমেন্ট
বিকল্প পদ্ধতি (MongoDB 4.4+): $last অ্যাকুমুলেটর ব্যবহার করে গ্রুপিংয়ের সময় শেষ এলিমেন্ট পাওয়া যায়:
db.demo103.aggregate([
{ $project: { Details1: 1, lastDetail: { $last: "$Details" } } },
{ $match: { "lastDetail.StudentId": 103 } }
])