इसके लिए MongoDB में aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं:
> db.demo718.insertOne({
"id":101,
"details": {
"OtherDetails": ["Chris", "Mike", "Sam"],
"GroupName": ["Group-1"],
"Info": []
}
}); { "acknowledged" : true, "insertedId" : ObjectId("5eaae25843417811278f5880") }
> db.demo718.insertOne({
"id":102,
"details": {
"OtherDetails": ["Chris", "David"],
"GroupName": ["Group-1"],
"Info": []
}
}); { "acknowledged" : true, "insertedId" : ObjectId("5eaae25943417811278f5881") }
find() मेथड की मदद से कलेक्शन के सभी दस्तावेज प्रदर्शित करें:
> db.demo718.find();
यह निम्न आउटपुट देगा:
{ "_id" : ObjectId("5eaae25843417811278f5880"), "id" : 101, "details" : { "OtherDetails" : [ "Chris", "Mike", "Sam" ], "GroupName" : [ "Group-1" ], "Info" : [ ] } }
{ "_id" : ObjectId("5eaae25943417811278f5881"), "id" : 102, "details" : { "OtherDetails" : [ "Chris", "David" ], "GroupName" : [ "Group-1" ], "Info" : [ ] } }
सभी दस्तावेजों में विशिष्ट मानों की गिनती करने के लिए क्वेरी:
> db.demo718.aggregate([
{ $unwind: "$details.GroupName" },
{ $match: { "details.GroupName": "Group-1" } },
{ $unwind: "$details.OtherDetails" },
{ $group: {
_id: "$details.GroupName",
OtherDetailsUnique: { $addToSet: "$details.OtherDetails" }
}},
{ $project: {
_id: 0,
GROUP_NAME: "$_id",
OtherDetailsUniqueCount: { $size: "$OtherDetailsUnique" }
}}
])
यह निम्न आउटपुट देगा:
{ "GROUP_NAME" : "Group-1", "OtherDetailsUniqueCount" : 4 }