ভূমিকা
MongoDB-এ মাল্টিডাইমেনশনাল (বহুমাত্রিক) অ্যারে থেকে নির্দিষ্ট ডেটা বের করতে এগ্রিগেশন ফ্রেমওয়ার্ক ব্যবহার করা হয়। নিচে একটি উদাহরণের মাধ্যমে দুইটি লেভেলের অ্যারে থেকে নির্দিষ্ট মান বের করার পদ্ধতি দেখানো হয়েছে।
নমুনা ডেটা তৈরি
multiDimensionalArrayProjection কালেকশনে একটি ডকুমেন্ট ইনসার্ট করা হয়েছে, যেখানে StudentMarks নামে দুই ডাইমেনশনাল অ্যারে রয়েছে।
> db.multiDimensionalArrayProjection.insertOne( { "StudentFirstName" : "Chris", "StudentMarks" : [ [98, 99],[56,79] ] } );
{ "acknowledged" : true, "insertedId" : ObjectId("5cc6b75a9cb58ca2b005e66c") }
ডকুমেন্ট প্রদর্শন
> db.multiDimensionalArrayProjection.find().pretty();
আউটপুট
{ "_id" : ObjectId("5cc6b75a9cb58ca2b005e66c"), "StudentFirstName" : "Chris", "StudentMarks" : [ [ 98, 99 ], [ 56, 79 ] ] }
এগ্রিগেশন পাইপলাইন দিয়ে দ্বিতীয় সাব-অ্যারের দ্বিতীয় মান বের করা
নিচের পাইপলাইন:
1. $unwind - প্রথম লেভেলের অ্যারে ফ্ল্যাট করে।
2. $limit: 1 - প্রথম ডকুমেন্ট নেয়।
3. $project - শুধু StudentMarks ফিল্ড রাখে।
4. আবার $unwind - দ্বিতীয় লেভেলের অ্যারে ফ্ল্যাট করে।
5. $skip: 1 - প্রথম এলিমেন্ট বাদ দেয়।
6. $limit: 1 - দ্বিতীয় এলিমেন্ট নেয়।
> db.multiDimensionalArrayProjection.aggregate([ { $unwind: '$StudentMarks' }, { $limit: 1 }, { $project: { _id: 0, StudentMarks: 1 } }, { $unwind: '$StudentMarks' }, { $skip: 1 }, { $limit: 1 } ]);
ফলাফল
{ "StudentMarks" : 99 }
ব্যাখ্যা: এখানে প্রথম $unwind後, ডকুমেন্ট দুটি হয়ে যায়: [98,99] এবং [56,79]। $limit:1 নিলে [98,99] রয়ে যায়। দ্বিতীয় $unwind後 এটি 98 এবং 99 হয়ে যায়। $skip:1 দিয়ে ৯৮ বাদ দিয়ে ৯৯ পাওয়া যায়।