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

MongoDB-এ $lookup ব্যবহার করে ObjectId-এর অ্যারে সাথে জয়েন করা

$lookup পাইপলাইন সিনট্যাক্স দিয়ে ObjectId অ্যারে জয়েন

MongoDB Aggregation-এ $lookup ব্যবহার করে একটি কালেকশনের ObjectId অ্যারেকে অন্য কালেকশনের ডকুমেন্টসের সাথে জয়েন করা যায়। পাইপলাইন সিনট্যাক্স (MongoDB 3.6+) এ $expr এবং $in ব্যবহার করে এটি করা হয়।

প্রথম কালেকশন (demo395) তৈরি

> db.demo395.insertOne({Name:"Chris"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5e782317aa3ef9ab8ab207") }
> db.demo395.insertOne({Name:"David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5e782317aa3ef9ab8ab208") }

দ্বিতীয় কালেকশন (demo396) তৈরি - ObjectId অ্যারে সহ

> db.demo396.insertOne({"details" : [
    ObjectId("5e5e782317aa3ef9ab8ab207"),
    ObjectId("5e5e782317aa3ef9ab8ab208")
] });
{ "acknowledged" : true, "insertedId" : ObjectId("5e5e787817aa3ef9ab8ab209") }

দুই কালেকশন দেখানো

> db.demo395.find();
{ "_id" : ObjectId("5e5e782317aa3ef9ab8ab207"), "Name" : "Chris" }
{ "_id" : ObjectId("5e5e782317aa3ef9ab8ab208"), "Name" : "David" }
> db.demo396.find();
{ "_id" : ObjectId("5e5e787817aa3ef9ab8ab209"), "details" : [ ObjectId("5e5e782317aa3ef9ab8ab207"), ObjectId("5e5e782317aa3ef9ab8ab208") ] }

$lookup পাইপলাইন সিনট্যাক্স দিয়ে জয়েন

> db.demo396.aggregate([
    { "$lookup": {
        "from": "demo395",
        "let": { "details": "$details" },
        "pipeline": [
            { "$match": { "$expr": { "$in": [ "$_id", "$$details" ] } } }
        ],
        "as": "output"
    }}
])

ফলাফল (output ফিল্ডে জয়েন করা ডকুমেন্টস):


ব্যাখ্যা: let দিয়ে details অ্যারে ভেরিয়েবলে নেওয়া হয়েছে। পাইপলাইনে $match এবং $expr: {$in: ["$_id", "$$details"]} দিয়ে demo395-এ থাকা _id যেগুলো details অ্যারেতে আছে সেগুলো ফিল্টার করা হয়েছে। এটি লেফ্ট আউটার জয়েনের মতো কাজ করে।

  1. MongoDB-এ অবজেক্ট অ্যারে থেকে ডISTINCT মান বের করা

  2. MongoDB-এ অবজেক্ট অ্যারে থেকে নির্দিষ্ট আইটেম বের করা

  3. MongoDB-এ অ্যারে অবজেক্টের নির্দিষ্ট ইনডেক্স আপডেট করা

  4. MongoDB-এ অ্যারে অবজেক্টের নির্দিষ্ট এলিমেন্টের মান ইনক্রিমেন্ট করা