Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
MongoDB GroupBy to set status
For this, you can use aggregate() in MongoDB. Let us create a collection with documents −
> 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")
}
Display all documents from a collection with the help of find() method −
> db.demo149.find();
This will produce the following output −
{ "_id" : ObjectId("5e350386fdf09dd6d08539c4"), "Status" : 40 }
{ "_id" : ObjectId("5e350388fdf09dd6d08539c5"), "Status" : 40 }
{ "_id" : ObjectId("5e35038afdf09dd6d08539c6"), "Status" : 50 }
Here is the query to MongoDB group by −
> 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] ]
... }
... }
... }
... ]);
This will produce the following output −
{
"done" : [
{ "_id" : ObjectId("5e350386fdf09dd6d08539c4"), "Status" : 40 },
{ "_id" : ObjectId("5e350388fdf09dd6d08539c5"), "Status" : 40 } ], "notdone" : [
{ "_id" : ObjectId("5e35038afdf09dd6d08539c6"), "Status" : 50 }
]
}Advertisements