एग्रीगेशन पाइपलाइन: $unwind, $group, $replaceRoot से फ्रीक्वेंसी गिनें
ऐरे फ़ील्ड में प्रत्येक मान की आवृत्ति (कितनी बार आता है) गिनने के लिए एग्रीगेशन स्टेज्स का संयोजन उपयोग करें।
उदाहरण: संग्रह बनाना
> db.demo184.insertOne({"Names": ["Chris", "David", "Bob"]});
{ "acknowledged": true, "insertedId": ObjectId("5e3999fb9e4f06af55199805") }
> db.demo184.insertOne({"Names": ["Chris", "Mike"]});
{ "acknowledged": true, "insertedId": ObjectId("5e399a0d9e4f06af55199806") }
> db.demo184.insertOne({"Names": ["Chris", "Bob", "Carol"]});
{ "acknowledged": true, "insertedId": ObjectId("5e399a209e4f06af55199807") }
सभी डॉक्यूमेंट्स देखना
> db.demo184.find();
{ "_id": ObjectId("5e3999fb9e4f06af55199805"), "Names": ["Chris", "David", "Bob"] }
{ "_id": ObjectId("5e399a0d9e4f06af55199806"), "Names": ["Chris", "Mike"] }
{ "_id": ObjectId("5e399a209e4f06af55199807"), "Names": ["Chris", "Bob", "Carol"] }
फ्रीक्वेंसी गिनने की एग्रीगेशन क्वेरी
> db.demo184.aggregate([
{ "$unwind": "$Names" },
{ "$group": { "_id": "$Names", "count": { "$sum": 1 } } },
{ "$group": {
"_id": null,
"counts": { "$push": { "k": "$_id", "v": "$count" } }
}},
{ "$replaceRoot": { "newRoot": { "$arrayToObject": "$counts" } } }
])
आउटपुट:
{ "Carol": 1, "David": 1, "Chris": 3, "Bob": 2, "Mike": 1 }
पाइपलाइन:
$unwind: ऐरे को अलग-अलग डॉक्यूमेंट्स में फ़्लैट करता है।- पहला
$group: प्रत्येक नाम के लिए गिनती करता है। - दूसरा
$group: सभी गिनतियों को की-वैल्यू पेयर्स के ऐरे में संग्रहीत करता है। $replaceRoot+$arrayToObject: उस ऐरे को ऑब्जेक्ट में बदलता है।