কম্পিউটার টিউটোরিয়াল

MongoDB-এ সাব-ডকুমেন্টের শর্ত অনুযায়ী ডকুমেন্ট কোয়েরি করা

$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 অগ্রেশন এক্সপ্রেশন কোয়েরিতে ব্যবহার করার অনুমতি দেয়।

  1. MongoDB-এ OR শর্ত দিয়ে একাধিক ডকুমেন্ট ফেচ করা

  2. MongoDB-এ নির্দিষ্ট ফিল্ডের সব ডকুমেন্টের মান যোগ করা (aggregate $sum)

  3. MongoDB-তে এমবেডেড ডকুমেন্ট কোয়েরি করা (aggregate + $unwind)

  4. MongoDB-এ bulkWrite() দিয়ে এক কোয়েরিতে একাধিক ডকুমেন্ট আপডেট করা