Ограничить и отсортировать встроенную карту / уменьшить в MongoDB - PullRequest
0 голосов
/ 09 февраля 2012

Насколько я знаю, я не могу указать сложную функцию сортировки в Mongo, поэтому мне приходится использовать запрос map / Reduce, который кажется немного бесполезным, поскольку я даже не использую часть Reduce. Это нормально, но коллекция, которую он возвращает, слишком велика, мне нужно отсортировать и ограничить ее (разбить на страницы). Возможно ли это сделать с помощью встроенного вызова? Я не могу сохранить полученную коллекцию и затем запросить ее, потому что коллекция уникальна для каждого пользователя и постоянно изменяется.

1 Ответ

4 голосов
/ 09 февраля 2012

Обычно sort в mongodb mapreduce применяется перед картой, буквально они применяются к входным данным, а не к выходным.

Из документов Mongodb

   [, sort : <sorts the input objects using this key. Useful for optimization, like sorting by the emit key for fewer reduces>]
   [, limit : <number of objects to return from collection>]

Так что, если вы хотите отсортировать и ограничить карту, чтобы уменьшить вывод, вы должны сохранить результат во временной коллекции. Я не думаю, что возможно применить sort & limit к выводу inline mapreduce, так как он работает в оперативной памяти.

EDIT:

Существует открытая проблема ( Добавить поддержку для сортировки и ограничения встроенной карты / уменьшить ) в mongodb Jira по этому поводу. Посмотри.

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