Na standardním SQL DBMS by to bylo provedeno pomocí následujícího dotazu:
SELECT type, count(*) as ct FROM table GROUP BY type ORDER BY ct;
na mongodb by to bylo provedeno pomocí funkce group, i když je to trochu složitější:
db.collection.group(
{key: { "type":true},
reduce: function(obj,prev) { prev.count += 1; },
initial: { count: 0 }
});
Zde žádám db, aby vrátila hodnoty pro klíč „type“ (tedy „true“) a pro každou hodnotu bude daná funkce snížení použita k agregaci nalezených záznamů. Zde jen aktualizuji počet, kolikrát se každý záznam objeví. Pokud spustíte tento dotaz, dostanete něco takového:
[
{
"type" : "report",
"count" : 5
},
{
"type" : "memo",
"count" : 15
}
{
"type" : "research",
"count" : 3
}
]
Všimnete si, že to není objednáno; dokonce i mongodb docs říkají, že nejjednodušší způsob, jak to objednat, je udělat to na straně klienta.
Příslušná dokumentace je zde .