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

MongoDB-তে অ্যাগ্রিগেশন ফিল্টারে দুটি ফিল্ড তুলনা করা


এজন্য aggregate() এবং $filter ব্যবহার করুন। ডকুমেন্টসহ একটি কলেকশন তৈরি করি:

> db.demo137.insertOne(
    {
        Name1:"Chris",
        Name2:"David",
        Detail1:[
            {_id:"John", Name3:"Chris"},
            {_id:"Chris", Name3:"Chris"}
        ],
        Detail2:[{_id:"David", Name3:"Chris"}, {_id:"Carol", Name3:"Chris"}, {_id:"John", Name3:"Chris"}]
    }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5e31b4cefdf09dd6d08539a0") }

find() মেথড দিয়ে সব ডকুমেন্ট দেখান:

> db.demo137.find();

আউটপুট:

{ "_id" : ObjectId("5e31b4cefdf09dd6d08539a0"), "Name1" : "Chris", "Name2" : "David", "Detail1" : [ { "_id" : "John", "Name3" : "Chris" }, { "_id" : "Chris", "Name3" : "Chris" } ], "Detail2" : [ { "_id" : "David", "Name3" : "Chris" }, { "_id" : "Carol", "Name3" : "Chris" }, { "_id" : "John", "Name3" : "Chris" } ] }

অ্যাগ্রিগেশন ফিল্টারে দুটি ফিল্ড তুলনা করার কোয়েরি:

> db.demo137.aggregate([
    {
        $project: {
            _id: 0,
            Name1: 1,
            Name2: 1,
            Detail1: {
                $filter: {
                    input: "$Detail1",
                    as: "out",
                    cond: { $eq: ["$$out._id", "$Name1"] }
                }
            },
            Detail2: {
                $filter: {
                    input: "$Detail2",
                    as: "out",
                    cond: { $eq: ["$$out._id", "$Name2"] }
                }
            }
        }
    }
])

ফলাফল (শুধু ম্যাচ করা সাব-ডকুমেন্টগুলো):

{ "Name1" : "Chris", "Name2" : "David", "Detail1" : [ { "_id" : "Chris", "Name3" : "Chris" } ], "Detail2" : [ { "_id" : "David", "Name3" : "Chris" } ] }

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

  2. MongoDB-এ অ্যারে ফিল্ডে সব এলিমেন্ট ম্যাচ করা ($all অপারেটর)

  3. MongoDB অ্যাগ্রিগেশন দিয়ে সবচেয়ে কম মার্কসuage वाले দুটি ডকুমেন্ট বের করা

  4. MongoDB এগ্রিগেশন: একাধিক ফিল্ড দিয়ে কাউন্ট করা