Агрегация MongoDb

Как написать аналогичный запрос, используя агрегацию mongdoDb

select count(*) as ccount from a group by a.someField order by ccount desc limit 1

Используя групповую функцию в mondoDb, я хочу сгруппировать свою коллекцию по определенному ключу и вернуть 1 строку, что встречается чаще

Код ниже на Java, возвращаемый список, который был применен к группе по полю someField и возвращает коллекцию элементов, где каждый элемент имеет 2 поля: "someField" и "count" (количество вхождений). Я хотел бы избежать второй итерации на клиенте сторона, чтобы узнать максимальное количество отсчетов

new GroupCommand(myCollection,
                 new BasicDBObject("someField ", true),
                 null,
                 new BasicDBObject("count", 0),
                "function(key,val){ val.count++;}", 
                 null);

person user12384512    schedule 30.04.2012    source источник


Ответы (2)


Для групповой команды MongoDB нет ничего похожего на порядок или ограничение SQL. Платформа агрегации в текущем выпуске разработки (версия 2.1) предоставляет операторы $sort и $limit:

http://www.mongodb.org/display/DOCS/Aggregation+Framework

person A. Jesse Jiryu Davis    schedule 30.04.2012
comment
Обновление: стабильная версия Mongo 2.2 теперь является официальной, а структура агрегации теперь доступна в рабочем качестве. - person Nic Cottrell; 20.09.2012

В mongoDB 3 вы можете использовать лимит и пропустить:

http://docs.mongodb.org/manual/reference/operator/aggregation/

person Alexander Suvorov    schedule 04.05.2015