Get the aggregated result and find the count of repeated values in different MongoDB\\ndocuments



To get the count of repeated values in different documents, use aggregate(). Let us create a collection with documents −

> db.demo452.insertOne({"StudentName":"John","StudentAge":21});{    "acknowledged" : true,    "insertedId" : ObjectId("5e7b7e3371f552a0ebb0a6f3") } > db.demo452.insertOne({"StudentName":"John","StudentAge":22});{    "acknowledged" : true,    "insertedId" : ObjectId("5e7b7e3671f552a0ebb0a6f4") } > db.demo452.insertOne({"StudentName":"John","StudentAge":23});{    "acknowledged" : true,    "insertedId" : ObjectId("5e7b7e3971f552a0ebb0a6f5") } > db.demo452.insertOne({"StudentName":"David","StudentAge":24});{    "acknowledged" : true,    "insertedId" : ObjectId("5e7b7e4371f552a0ebb0a6f6") } > db.demo452.insertOne({"StudentName":"David","StudentAge":25});{    "acknowledged" : true,    "insertedId" : ObjectId("5e7b7e4571f552a0ebb0a6f7") }

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

> db.demo452.find();

This will produce the following output −

{ "_id" : ObjectId("5e7b7e3371f552a0ebb0a6f3"), "StudentName" : "John", "StudentAge" : 21 } { "_id" : ObjectId("5e7b7e3671f552a0ebb0a6f4"), "StudentName" : "John", "StudentAge" : 22 } { "_id" : ObjectId("5e7b7e3971f552a0ebb0a6f5"), "StudentName" : "John", "StudentAge" : 23 } { "_id" : ObjectId("5e7b7e4371f552a0ebb0a6f6"), "StudentName" : "David", "StudentAge" : 24} { "_id" : ObjectId("5e7b7e4571f552a0ebb0a6f7"), "StudentName" : "David", "StudentAge" : 25}

Following is the query to find the count of repeated values in different MongoDB documents −

> db.demo452.aggregate([ ...    {$group: {_id:"$StudentName", count:{$sum:1}}}, ...    {$sort: {count:-1}}, ... ...    {$group: {_id:1, StudentName:{$push:{StudentName:"$_id", count:"$count"}}}}, ...    {$project: { ...       first : {$arrayElemAt: ["$StudentName", 0]}, ...       second: {$arrayElemAt: ["$StudentName", 1]}, ...       others: {$slice:["$StudentName", 2, {$size: "$StudentName"}]} ...    } ... }, ... ... {$project: { ...    status: [ ...       "$first", ...       "$second", ...       { ...          StudentName: "New Student Name", ...          count: {$sum: "$others.count"} ...       } ...    ] ... } ... }, ... ... {$unwind: "$status"}, ... {$project: { _id:0, StudentName: "$status.StudentName", count: "$status.count" }} ... ])

This will produce the following output −

{ "StudentName" : "John", "count" : 3 } { "StudentName" : "David", "count" : 2 } { "StudentName" : "New Student Name", "count" : 0 }
Updated on: 2020-05-11T09:11:28+05:30

173 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements