Grouping the array items in MongoDB and get the count the products with similar price?



To group the array items, use $group along with $sort. Let us create a collection with documents −

> db.demo566.insertOne( ... { ... ...    "ProductInformation" : [ ...       { ...          "ProductName" : "Product-1", ...          "ProductPrice" :100 ...       }, ...       { ...          "ProductName" : "Product-2", ...          "ProductPrice" :1100 ...       }, ...       { ...          "ProductName" : "Product-3", ...          "ProductPrice" :100 ...       }, ...       { ...          "ProductName" : "Product-4", ...          "ProductPrice" :1100 ...       }, ...       { ...          "ProductName" : "Product-5", ...          "ProductPrice" :100 ...       } ...    ] ... ... } ... ); {    "acknowledged" : true,    "insertedId" : ObjectId("5e908e2339cfeaaf0b97b57a") }

Display all documents from a collection with the help of find() method −

> db.demo566.find();

This will produce the following output −

{ "_id" : ObjectId("5e908e2339cfeaaf0b97b57a"), "ProductInformation" : [    { "ProductName" : "Product-1", "ProductPrice" : 100 },    { "ProductName" : "Product-2", "ProductPrice" : 1100 },    { "ProductName" : "Product-3", "ProductPrice" : 100 },    { "ProductName" : "Product-4", "ProductPrice" : 1100 },    { "ProductName" : "Product-5", "ProductPrice" : 100 } ] }

Following is the query to group the array items −

> db.demo566.aggregate([ ... { ...    "$unwind": "$ProductInformation" ... }, ... { ...    "$group": { ...       "_id": "$ProductInformation.ProductPrice", ...       "Value": { "$sum" : 1 } ...    } ... }, ... { "$sort": { "_id" :1 } } ... ])

This will produce the following output −

{ "_id" : 100, "Value" : 3 } { "_id" : 1100, "Value" : 2 }
Updated on: 2020-05-14T08:33:48+05:30

935 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements