
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 Aggregation with Equality Inside Array
For this, use aggregate() along with $group. Let us create a collection with documents −
> db.demo578.insertOne( ... { ... "_id" : 1, ... "Info" : { ... "firstName" : "Chris", ... "lastName" : "Brown" ... }, ... ... "achievements" : [ ... { ... "winner" : "10th", ... "year" : 2010, ... "by" : "School" ... }, ... { ... "winner" : "12th", ... "year" : 2012, ... "by" : "School" ... }, ... { ... "winner" : "Good Rank", ... "year" : 2012, ... "by" : "College" ... } ... ] ... } ... ); { "acknowledged" : true, "insertedId" : 1 }
Display all documents from a collection with the help of find() method −
> db.demo578.find();
This will produce the following output −
{ "_id" : 1, "Info" : { "firstName" : "Chris", "lastName" : "Brown" }, "achievements" : [ { "winner" : "10th", "year" : 2010, "by" : "School" }, { "winner" : "12th", "year" : 2012, "by" : "School" }, { "winner" : "Good Rank", "year" : 2012, "by" : "College" } ] }
Following is the query for aggregation with equality inside an array −
> db.demo578.aggregate([ ... { ... "$unwind": "$achievements" ... }, ... { ... "$group": { ... "_id": { ... "year": "$achievements.year", ... "firstName": "$Info.firstName", ... "lastName": "$Info.lastName" ... }, ... "count": { "$sum": 1 }, ... "AchievementName": { "$push": "$Info" } ... } ... }, ... { ... "$match": { "count": 2 } ... }, ... { ... "$project": { ... "_id": 0, ... "year": "$_id.year", ... "AchievementName": 1, ... "count": 1 ... } ... } ... ]).pretty();
This will produce the following output −
{ "count" : 2, "AchievementName" : [ { "firstName" : "Chris", "lastName" : "Brown" }, { "firstName" : "Chris", "lastName" : "Brown" } ], "year" : 2012 }
Advertisements