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

MongoDB অ্যাগ্রিগেশন: $$ROOT এবং $first অপারেটর ব্যবহার করে রুট ডকুমেন্ট রেফারেন্স পাওয়া

MongoDB অ্যাগ্রিগেশনে $$ROOT সিস্টেম ভেরিয়েবলটি বর্তমান প্রক্রিয়াধীন রুট ডকুমেন্টকে রেফার করে। $first অ্যাকিউমুলেটর দিয়ে গ্রুপের প্রথম ডকুমেন্ট (রুট রেফারেন্সসহ) সংরক্ষণ করা যায়।

উদাহরণ: একই নাম, বয়স, কিন্তু ভিন্ন ক্রিয়েট ডেট

> db.demo582.insertOne({FirstName: "Chris", Age: 21, createDate: new ISODate("2020-01-10")});
> db.demo582.insertOne({FirstName: "Chris", Age: 21, createDate: new ISODate("2020-04-21")});
> db.demo582.insertOne({FirstName: "Chris", Age: 22, createDate: new ISODate("2020-02-11")});
> db.demo582.insertOne({FirstName: "Chris", Age: 22, createDate: new ISODate("2020-01-12")});

অ্যাগ্রিগেশন: FirstName অনুযায়ী গ্রুপ, ম্যাক্স ডেট, কাউন্ট, এবং প্রথম ডকুমেন্ট

> db.demo582.aggregate([
    { $group: {
        _id: "$FirstName",
        MaximumDate: { $max: "$createDate" },
        count: { $sum: 1 },
        details: { $first: "$$ROOT" }
    }},
    { $project: {
        MaximumDate: 1, count: 1,
        details: { _id: "$_id", FirstName: "$details.FirstName", Age: "$details.Age" }
    }}
]);

আউটপুট:

{ "_id" : "Chris", "MaximumDate" : ISODate("2020-04-21T00:00:00Z"), "count" : 4, "details" : { "_id" : "Chris", "FirstName" : "Chris", "Age" : 21 } }

ব্যাখ্যা:

  • $$ROOT - পাইপলাইনে প্রবেশ করার সময় পুরো ডকুমেন্টকে রেফার করে
  • $first: "$$ROOT" - গ্রুপের প্রথম ডকুমেন্ট (সহ সব ফিল্ড) সংরক্ষণ করে
  • $project - আউটপুট শেপ করুন (শুধু প্রয়োজনীয় ফিল্ড রাখুন)
  • সর্ট না করলে "প্রথম" ডকুমেন্ট অনির্ধারিত হতে পারে; আগে $sort ব্যবহার করুন
  1. জাভাস্ক্রিপ্টে ডকুমেন্টের প্রথম ইমেজের আইডি রিটার্ন করা

  2. জাভাস্ক্রিপ্টে টাইপ কনভার্সনে '+' অপারেটরের গুরুত্ব

  3. জাভাস্ক্রিপ্টে কোনো সংখ্যার ঘনমূল বের করা

  4. জাভাস্ক্রিপ্ট ব্যবহার করে <text>-এর মান ভেরিয়েবলে এক্সট্রাক্ট করা