På en standard SQL DBMS skulle detta göras med följande fråga:
SELECT type, count(*) as ct FROM table GROUP BY type ORDER BY ct;
på mongodb skulle detta göras med hjälp av gruppfunktionen, även om det är lite mer komplicerat:
db.collection.group(
{key: { "type":true},
reduce: function(obj,prev) { prev.count += 1; },
initial: { count: 0 }
});
Här ber jag db att returnera värden för nyckeln "type" (därav "true"), och för varje värde kommer den givna reduceringsfunktionen att användas för att aggregera de hittade posterna. Här uppdaterar jag bara en räkning av hur många gånger varje post dyker upp. Om du kör den här frågan får du något sånt här:
[
{
"type" : "report",
"count" : 5
},
{
"type" : "memo",
"count" : 15
}
{
"type" : "research",
"count" : 3
}
]
Du kommer att märka att detta inte är beställt; även mongodb-dokumenten säger att det enklaste sättet att beställa det är att göra det på klientsidan.
Relevant dokumentation finns här .