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

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

একাধিক ফিল্ড দিয়ে কাউন্ট করতে $facet ব্যবহার করুন। এটি একই ইনপুট ডকুমেন্টে একাধিক পাইপলাইন প্রসেস করে।

> db.demo721.insertOne({ "details1": { "id":101 }, "details2": { "id":101 }, "details3": { "id":101 } });
> db.demo721.insertOne({ "details1": { "id":101 }, "details2": { "id":102 }, "details3": { "id":102 } });

কমপ্লেক্স এগ্রিগেশন কোয়েরি:

> db.demo721.aggregate([
  {$facet:{
    ids:[
      {$group:{ _id:null, d3:{$addToSet: "$details3.id"}, d2:{$addToSet:"$details2.id"}, d1:{$addToSet:"$details1.id"}}},
      {$project:{ _id:0, listofall:{$setUnion:["$d1","$d2","$d3"]}}}
    ],
    d:[{$project:{ _id:0, a1:"$details1.id", a2:"$details2.id", a3:"$details3.id"}}]
  }},
  {$unwind:"$d"}, {$unwind:"$ids"}, {$unwind:"$ids.listofall"},
  {$group:{ _id:"$ids.listofall",
    details1id:{$sum:{$cond:[{$eq:["$d.a1","$ids.listofall"]},1,0]}},
    details2id:{$sum:{$cond:[{$eq:["$d.a2","$ids.listofall"]},1,0]}},
    details3id:{$sum:{$cond:[{$eq:["$d.a3","$ids.listofall"]},1,0]}}}}
])

ফলাফল:

{ "_id" : 102, "details1id" : 0, "details2id" : 1, "details3id" : 1 }
{ "_id" : 101, "details1id" : 2, "details2id" : 1, "details3id" : 1 }
  1. MongoDB অগ্রেশন পাইপলাইনে $ifNull ব্যবহার

  2. MongoDB-এ অ্যারে আইটেম গণনা করার পদ্ধতি

  3. MongoDB এগ리게শনে ফিল্ড কম্বাইন করে কাউন্ট করা

  4. MySQL-এ একাধিক কলামে একাধিক COUNT করার পদ্ধতি