$expr, $let, $arrayElemAt ব্যবহার করে সাব-ডকুমেন্ট শর্তে কোয়েরি
MongoDB-এ নেস্টেড অ্যারে অবজেক্টের (সাব-ডকুমেন্ট) নির্দিষ্ট শর্ত অনুযায়ী প্যারেন্ট ডকুমেন্ট কোয়েরি করতে $expr, $let এবং $arrayElemAt ব্যবহার করা হয়।
নমুনা সংগ্রহ তৈরি (নেস্টেড ডেটস অ্যারে)
> db.demo394.insertOne(
{
details: [
{ _id: '1', startDate: '2018-01-11T07:00:00.000Z', endDate: '2019-01-12T07:59:59.999Z' },
{ _id: '2', startDate: '2019-01-21T07:00:00.000Z', endDate: '2020-01-04T07:59:59.999Z' }
]
}
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e5e716817aa3ef9ab8ab202") }
ডকুমেন্ট দেখানো
> db.demo394.find();
আউটপুট:
শেষ সাব-ডকুমেন্টের endDate শর্ত দিয়ে কোয়েরি
> db.demo394.find({ $expr: { $let: { vars: { "d": { $arrayElemAt: [ "$details", -1 ] } }, in: { $eq: [ "$$d.endDate", "2020-01-04T07:59:59.999Z" ] } } } })ফলাফল (শেষ এলিমেন্টের endDate মিলে ডকুমেন্ট ফেরত):
ব্যাখ্যা: $arrayElemAt: ["$details", -1] দিয়ে ডেটস অ্যারের শেষ এলিমেন্ট নেওয়া হয়েছে। $let দিয়ে ভেরিয়েবল "d"-এ রাখা হয়েছে। তারপর $$d.endDate নির্দিষ্ট মানের সাথে $eq দিয়ে মেলানো হয়েছে। $expr অগ্রেশন এক্সপ্রেশন কোয়েরিতে ব্যবহার করার অনুমতি দেয়।