Ограничить результаты group () в MongoDB - PullRequest
2 голосов
/ 03 октября 2010

Как я могу ограничить количество результатов при использовании group () в MongoDB? В основном я ищу эквивалент этого запроса MySQL:

SELECT * FROM items GROUP BY type LIMIT 5;

Редактировать: Я только что понял, что это можно сделать с помощью Map / Reduce, но я прочитал, что использование Map / Reduce на одном сервере (в моем случае) немного излишним. Это правда? В конечном итоге, как лучше всего достичь того, что мне нужно?

1 Ответ

5 голосов
/ 04 октября 2010

Проблема с группой в том, что она этого не сделает. Он просто возвращает массив всех групп.

Вы можете использовать карту / уменьшить для решения этой проблемы:

  1. Выпуск карты / Уменьшить (в временную или постоянную коллекцию)
  2. Выполнение поиска в этой коллекции с помощью .limit (5) для курсора, который возвращается

Map / Reduce на одном сервере не является избыточным с MongoDB. Однако вы работаете над компромиссом «скорость / пространство». Теоретически вы можете запускать временную карту-уменьшение каждый раз, когда вам нужны эти данные. Однако, если вы делаете это много, вы, вероятно, захотите запланировать уменьшение карты и запросить магазин, так как уменьшение карты не дешево.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...