Ich bin mit dem Restaurant Probendatensatzes zu arbeiten, wo die Daten, wie ist:Wie kann ich ein Zählfeld neben der aggregierten Gruppe nach Feld in MongoDB erhalten?
{
"_id" : ObjectId("5728c18870b1f4f542bd7c52"),
"borough" : "Brooklyn",
"cuisine" : "American",
"name" : "Riviera Caterer",
"restaurant_id" : "40356018"
}
{
"_id" : ObjectId("5728c18870b1f4f542bd7c55"),
"borough" : "Queens",
"cuisine" : "Jewish/Kosher",
"name" : "Tov Kosher Kitchen",
"restaurant_id" : "40356068"
}
(übersprungen einige Felder, die nicht benötigt wurden)
Was ich im Grunde tun möchte ist Gruppe die Daten nebeneinander gesetzt durch Küche, mit den Grafen und Küche, ähnlich wie:
select count(1) as Count, cuisine
from restaurants
group by cuisine
ergäbe
Count | Cuisine
--------------
10 | American
5 | Indian
Ausprobieren
db.restaurants.aggregate([
{"$group" : {_id:"$cuisine",
count_1:{$sum:1}}}
])
Ergebnisse Ergebnis wie folgt aus:
{ "_id" : "American ", "count_1" : 6183 }
{ "_id" : "Bakery", "count_1" : 691 }
{ "_id" : "Irish", "count_1" : 190 }
{ "_id" : "Chicken", "count_1" : 410 }
{ "_id" : "Ice Cream, Gelato, Yogurt, Ices", "count_1" : 348 }
{ "_id" : "Egyptian", "count_1" : 14 }
{ "_id" : "Jewish/Kosher", "count_1" : 316 }
{ "_id" : "Delicatessen", "count_1" : 321 }
{ "_id" : "Indonesian", "count_1" : 8 }
{ "_id" : "Russian", "count_1" : 88 }
{ "_id" : "Spanish", "count_1" : 637 }
{ "_id" : "Chinese", "count_1" : 2418 }
{ "_id" : "Hamburgers", "count_1" : 433 }
{ "_id" : "Hotdogs", "count_1" : 34 }
{ "_id" : "Sandwiches/Salads/Mixed Buffet", "count_1" : 255 }
{ "_id" : "Pancakes/Waffles", "count_1" : 16 }
{ "_id" : "Turkish", "count_1" : 70 }
{ "_id" : "Caribbean", "count_1" : 657 }
{ "_id" : "Donuts", "count_1" : 479 }
{ "_id" : "Bagels/Pretzels", "count_1" : 168 }
Ist es möglich, wie die Daten zu erhalten:
{ "American" : 6183 }
{ "Bakery" : 691 }
{ "Irish" : 190 }
{ "Chicken" : 410 }
{ "Ice Cream, Gelato, Yogurt, Ices" : 348 }
{ "Egyptian" : 14 }
{ "Jewish/Kosher" : 316 }
{ "Delicatessen": 321 }
und so weiter?
db.restaurants.aggregate(
{ $group: { "_id": {cuisine:"$cuisine"},
"Count": {"$sum":1}
}
},
{ "$project":
{ "_id": 0,
"Cuisine": "$_id.cuisine",
"Total":"$Count",
}
}
)
Aber hat recht nicht bekommen:
wie so mit Projektion Versuchte
{ "Cuisine" : "American ", "Total" : 6183 }
{ "Cuisine" : "Bakery", "Total" : 691 }
{ "Cuisine" : "Irish", "Total" : 190 }
{ "Cuisine" : "Chicken", "Total" : 410 }
{ "Cuisine" : "Ice Cream, Gelato, Yogurt, Ices", "Total" : 348 }
{ "Cuisine" : "Egyptian", "Total" : 14 }
{ "Cuisine" : "Jewish/Kosher", "Total" : 316 }
{ "Cuisine" : "Delicatessen", "Total" : 321 }
{ "Cuisine" : "Indonesian", "Total" : 8 }
{ "Cuisine" : "Russian", "Total" : 88 }
{ "Cuisine" : "Spanish", "Total" : 637 }
{ "Cuisine" : "Chinese", "Total" : 2418 }
{ "Cuisine" : "Hamburgers", "Total" : 433 }
{ "Cuisine" : "Hotdogs", "Total" : 34 }
{ "Cuisine" : "Sandwiches/Salads/Mixed Buffet", "Total" : 255 }
{ "Cuisine" : "Pancakes/Waffles", "Total" : 16 }
{ "Cuisine" : "Turkish", "Total" : 70 }
{ "Cuisine" : "Caribbean", "Total" : 657 }
{ "Cuisine" : "Donuts", "Total" : 479 }
{ "Cuisine" : "Bagels/Pretzels", "Total" : 168 }
Grundsätzlich ich die Zählung neben der Gruppe von Feld wollen, aber in MongoDB.
Sie benötigen eine clientseitige Verarbeitung oder verkleinern, aber Sie es richtig, schon tun. – styvane
Warum möchten Sie Ihre Daten als Schlüssel verwenden? Ich bin nur neugierig. – styvane
Iterieren Sie den resultierenden Cursor mit 'forEach'? –