Я бы обрабатывал запросы агрегации, отслеживая соответствующие значения отдельно, то есть в их собственной коллекции. Таким образом, вы можете просто запросить «наиболее часто встречающуюся» коллекцию. Недостаток: вам нужно выполнить еще одну запись при изменении данных.
Конечно, вы также можете время от времени обновлять эту коллекцию, используя Map / Reduce. Это немного зависит от того, насколько точной должна быть информация и как часто она меняется.
Убедитесь, однако, что не вызываете операцию Map / Reduce очень часто: она предназначена не для использования в интерактивном режиме (т. Е. Не для каждого просмотра страницы), а скорее в автономном процессе, который обновляет счетчики каждый раз. час или около того. Следовательно, если ваш счет меняется очень быстро, используйте коллекцию счетчиков.