På en standard SQL DBMS ville dette blive gjort med følgende forespørgsel:
SELECT type, count(*) as ct FROM table GROUP BY type ORDER BY ct;
på mongodb ville dette blive gjort ved hjælp af gruppefunktionen, selvom det er lidt mere kompliceret:
db.collection.group(
{key: { "type":true},
reduce: function(obj,prev) { prev.count += 1; },
initial: { count: 0 }
});
Her beder jeg db'en om at returnere værdier for nøglen "type" (deraf den "sande"), og for hver værdi vil den givne reduktionsfunktion blive brugt til at aggregere de fundne poster. Her opdaterer jeg lige en optælling af, hvor mange gange hver post vises. Hvis du kører denne forespørgsel, får du noget som dette:
[
{
"type" : "report",
"count" : 5
},
{
"type" : "memo",
"count" : 15
}
{
"type" : "research",
"count" : 3
}
]
Du vil bemærke, at dette ikke er bestilt; selv mongodb-dokumenterne siger, at den nemmeste måde at bestille det på er at gøre det på klientsiden.
Relevant dokumentation er her .