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

MongoDB-এ নির্দিষ্ট নেস্টেড প্রপার্টিতে প্রজেকশন

MongoDB অগ্রেশন পাইপলাইনে গভীর নেস্টেড ফিল্ডে প্রজেকশন

গভীর নেস্টেড অবজেক্টে নির্দিষ্ট কী-ভ্যালু পেয়ার (যেমন কী ৩৫-৬০ এর মধ্যে) ফিল্টার করে প্রজেক্ট করার জন্য অগ্রেশন পাইপলাইনে $addFields, $objectToArray, $filter, $arrayToObject ব্যবহার করা হয়।

উদাহরণ: গভীর নেস্টেড অবজেক্ট সহ ডকুমেন্ট

> db.demo379.insertOne({ "details1" : { "details2" : { "details3" : { "10" : "John", "50" : "Chris", "40" : "David", "30" : "Mike" } } } });
{ "acknowledged" : true, "insertedId" : ObjectId("5e5a94f82ae06a1609a00b10") }

প্রজেকশন করার আগে

> db.demo379.find().pretty();
{ "_id" : ObjectId("5e5a94f82ae06a1609a00b10"), "details1" : { "details2" : { "details3" : { "10" : "John", "30" : "Mike", "40" : "David", "50" : "Chris" } } } }

অগ্রেশন কুয়েরি: কী ৩৫-৬০ এর মধ্যে থাকা প্রপার্টি ফিল্টার

> db.demo379.aggregate([
    { "$addFields": {
        "details1.details2.details3": {
            "$arrayToObject": {
                "$filter": {
                    "input": { "$objectToArray": "$details1.details2.details3" },
                    "as": "out",
                    "cond": {
                        "$and": [
                            { "$gte": ["$$out.k", "35"] },
                            { "$lte": ["$$out.k", "60"] }
                        ]
                    }
                }
            }
        }
    }}
])

ফলাফল (শুধু 40 এবং 50)

{ "_id" : ObjectId("5e5a94f82ae06a1609a00b10"), "details1" : { "details2" : { "details3" : { "40" : "David", "50" : "Chris" } } } }

পাইপলাইন ব্যাখ্যা

  1. $objectToArray: নেস্টেড অবজেক্টকে কী-ভ্যালু অ্যারেতে রূপান্তর: [{k:"10",v:"John"}, {k:"50",v:"Chris"}, ...]।
  2. $filter: $and দিয়ে কী (স্ট্রিং) ৩৫-৬০ এর মধ্যে ফিল্টার।
  3. $arrayToObject: ফিল্টার করা অ্যারেকে আবার অবজেক্টে রূপান্তর।
  4. $addFields: মূল ডকুমেন্টে ফিল্ড আপডেট/রিপ্লেস।

নোট: কীগুলো স্ট্রিং হলে স্ট্রিং কম্পারিশন হয় ("35" < "40" < "50" < "60")। নাম্বার কী হলে $toInt ব্যবহার করুন।

  1. MongoDB-এ নির্দিষ্ট ফিল্ড দিয়ে সার্চ করা

  2. MongoDB 4-এ নেস্টেড কুয়েরি ব্যবহার করে নির্দিষ্ট ডকুমেন্ট ফেচ

  3. MongoDB-এ অবজেক্টের অ্যারে থেকে নেস্টেড ডকুমেন্ট কোয়েরি করা ($elemMatch)

  4. MongoDB এগ্রিগেশন ও প্রজেকশন: $project স্টেজ ব্যবহার