Op een standaard SQL DBMS zou dit worden gedaan met de volgende query:
SELECT type, count(*) as ct FROM table GROUP BY type ORDER BY ct;
op mongodb zou dit worden gedaan met behulp van de groepsfunctie, hoewel het iets gecompliceerder is:
db.collection.group(
{key: { "type":true},
reduce: function(obj,prev) { prev.count += 1; },
initial: { count: 0 }
});
Hier vraag ik de db om waarden te retourneren voor de sleutel "type" (vandaar de "true"), en voor elke waarde zal de gegeven reduceerfunctie worden gebruikt om de gevonden records te aggregeren. Hier werk ik gewoon een telling bij van hoe vaak elke record wordt weergegeven. Als u deze query uitvoert, krijgt u zoiets als dit:
[
{
"type" : "report",
"count" : 5
},
{
"type" : "memo",
"count" : 15
}
{
"type" : "research",
"count" : 3
}
]
U zult merken dat dit niet is besteld; zelfs de mongodb-documenten zeggen dat de gemakkelijkste manier om het te bestellen is om het aan de kant van de klant te doen.
Relevante documentatie is hier .