এজন্য MongoDB-তে aggregate() ব্যবহার করতে পারেন। ডকুমেন্টসহ একটি কলেকশন তৈরি করি:
> db.demo149.insertOne({"Status":40});
{ "acknowledged" : true, "insertedId" : ObjectId("5e350386fdf09dd6d08539c4") }
> db.demo149.insertOne({"Status":40});
{ "acknowledged" : true, "insertedId" : ObjectId("5e350388fdf09dd6d08539c5") }
> db.demo149.insertOne({"Status":50});
{ "acknowledged" : true, "insertedId" : ObjectId("5e35038afdf09dd6d08539c6") }
find() মেথড দিয়ে সব ডকুমেন্ট দেখান:
> db.demo149.find();
আউটপুট:
{ "_id" : ObjectId("5e350386fdf09dd6d08539c4"), "Status" : 40 }
{ "_id" : ObjectId("5e350388fdf09dd6d08539c5"), "Status" : 40 }
{ "_id" : ObjectId("5e35038afdf09dd6d08539c6"), "Status" : 50 }
MongoDB গ্রুপ বাই করার কোয়েরি (Status 40 কে "done", 50 কে "notdone" হিসেবে ভাগ করা):
> db.demo149.aggregate([
{
"$group": {
"_id": null,
"done": {
"$push": {
"$cond": [
{ "$eq": [ "$Status", 40 ] },
{ "_id": "$_id", "Status": "$Status" },
false
]
}
},
"notdone": {
"$push": {
"$cond": [
{ "$eq": [ "$Status", 50 ] },
{ "_id": "$_id", "Status": "$Status" },
false
]
}
}
}
},
{
"$project": {
"_id": 0,
"done": { "$setDifference": [ "$done", [false] ] },
"notdone": { "$setDifference": [ "$notdone", [false] ] }
}
}
]);
ফলাফল (দুই গ্রুপে ভাগ করা ডকুমেন্ট):
{ "done" : [ { "_id" : ObjectId("5e350386fdf09dd6d08539c4"), "Status" : 40 }, { "_id" : ObjectId("5e350388fdf09dd6d08539c5"), "Status" : 40 } ], "notdone" : [ { "_id" : ObjectId("5e35038afdf09dd6d08539c6"), "Status" : 50 } ] }