Field द्वारा documents group करके select करने के लिए $group के साथ $project का उपयोग करें।
Collection बनाना
> db.demo540.insertOne({id:1,"Name":"Chris","CountryName":"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8ca368ef4dcbee04fbbc0e") }
> db.demo540.insertOne({id:1,"Name":"Chris","CountryName":"UK"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8ca36bef4dcbee04fbbc0f") }
> db.demo540.insertOne({id:1,"Name":"Chris","CountryName":"AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e8ca370ef4dcbee04fbbc10") }
सभी Documents Display करना
> db.demo540.find();
Output:
{ "_id" : ObjectId("5e8ca368ef4dcbee04fbbc0e"), "id" : 1, "Name" : "Chris", "CountryName" : "US" }
{ "_id" : ObjectId("5e8ca36bef4dcbee04fbbc0f"), "id" : 1, "Name" : "Chris", "CountryName" : "UK" }
{ "_id" : ObjectId("5e8ca370ef4dcbee04fbbc10"), "id" : 1, "Name" : "Chris", "CountryName" : "AUS" }
Field द्वारा Group करके Select करने का Query
> var query= [
... {
... "$group": {
... "_id": {
... "id": "$id",
... "Name": "$Name"
... },
... "details": {
... "$push": {
... "CountryName": "$CountryName"
... }
... }
... }
... },
... {
... "$project": {
... "_id": "$_id.id",
... "Name": "$_id.Name",
... "details": 1
... }
... }
... ];
> db.demo540.aggregate(q).pretty();
Output:
{
"details" : [
{ "Name" : "Chris", "CountryName" : "US" },
{ "Name" : "Chris", "CountryName" : "UK" },
{ "Name" : "Chris", "CountryName" : "AUS" }
],
"_id" : 1,
"Name" : "Chris"
}
व्याख्या: पहले $group ने id और Name द्वारा group करके $push से CountryName का array बनाया। फिर $project ने output format restructure किया।