На стандартна SQL СУБД това ще бъде направено със следната заявка:
SELECT type, count(*) as ct FROM table GROUP BY type ORDER BY ct;
на mongodb това ще бъде направено с помощта на груповата функция, въпреки че е малко по-сложно:
db.collection.group(
{key: { "type":true},
reduce: function(obj,prev) { prev.count += 1; },
initial: { count: 0 }
});
Тук моля db да върне стойности за ключа "type" (оттук и "true") и за всяка стойност дадената функция за намаляване ще бъде използвана за агрегиране на намерените записи. Тук просто актуализирам броя на показванията на всеки запис. Ако изпълните тази заявка, ще получите нещо подобно:
[
{
"type" : "report",
"count" : 5
},
{
"type" : "memo",
"count" : 15
}
{
"type" : "research",
"count" : 3
}
]
Ще забележите, че това не е подредено; дори в документите на mongodb се казва, че най-лесният начин да го поръчате е да го направите от страна на клиента.
Съответната документация е тук .