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

MongoDB-এ দুটি কলেকশন অ্যাগ্রিগেট করা শর্তসাপেক্ষ মিল অনুযায়ী


দুটি কলেকশন জয়েন করে শর্তসাপেক্ষ ফিল্টার

MongoDB-এ $lookup ব্যবহার করে দুটি কলেকশন জয়েন করা যায়, এবং $redact বা $match দিয়ে শর্ত অনুযায়ী ফিল্টার করা যায়।

প্রথম কলেকশন: demo446

> db.demo446.insert([
    { "ProductName": "Product1", "ProductPrice": 60 },
    { "ProductName": "Product2", "ProductPrice": 90 }
])

দ্বিতীয় কলেকশন: demo447

> db.demo447.insert([
    { "ProductName": "Product1", "ProductPrice": 40 },
    { "ProductName": "Product2", "ProductPrice": 70 }
])

অ্যাগ্রিগেশন কোয়েরি: demo446-এর প্রাইস > (demo447-এর প্রাইস * rate + 3)

> var rate = 1
> db.demo446.aggregate([
    { $match: { "ProductPrice": { $exists: true }, "ProductName": { $exists: true } } },
    { $lookup: { from: "demo447", localField: "ProductName", foreignField: "ProductName", as: "demo447" }},
    { $unwind: "$demo447" },
    { $redact: {
        $cond: [
            { $gt: [ "$ProductPrice", { $add: [ { $multiply: ["$demo447.ProductPrice", rate] }, 3 ] } ] },
            "$$KEEP",
            "$$PRUNE"
        ]
    }}
])

ফলাফল:

{ "_id": ObjectId("..."), "ProductName": "Product1", "ProductPrice": 60, "demo447": { "_id": ObjectId("..."), "ProductName": "Product1", "ProductPrice": 40 } }
{ "_id": ObjectId("..."), "ProductName": "Product2", "ProductPrice": 90, "demo447": { "_id": ObjectId("..."), "ProductName": "Product2", "ProductPrice": 70 } }

ব্যাখ্যা

  • $lookup: SQL JOIN-এর মত দুটি কলেকশন একসাথে जोড়ে
  • $unwind: লুকআপের ফলাফল অ্যারে থেকে প্রতিটি এলিমেন্ট আলাদা ডকুমেন্ট বানায়
  • $redact: শর্ত অনুযায়ী ডকুমেন্ট রাখতে ($$KEEP) বা ফেলতে ($$PRUNE) সিদ্ধান্ত নেয়
  • শর্ত: ProductPrice > (demo447.ProductPrice * rate + 3)

দুই পণ্যের প্রাইসই শর্ত পূরণ করেছে, তাই দুটোই ফলাফলে আছে।

  1. MongoDB-এ খালি ফিল্ড চেক করার পদ্ধতি

  2. MongoDB-তে aggregate() এবং $group ব্যবহার করে ফিল্ড কাউন্ট অনুযায়ী গ্রুপিং

  3. MongoDB-তে সব ডকুমেন্টে নতুন ফিল্ড যোগ করা ($addFields)

  4. MongoDB কালেকশন থেকে ডুপ্লিকেট রিমুভ করার পদ্ধতি