После того, как результаты Map / Reduce в MongoDB сохранены как постоянная коллекция, как вы можете отсортировать их внутри и вернуть обратно с помощью Mongoid? - PullRequest
0 голосов
/ 24 сентября 2010

Правда ли, что результаты Map / Reduce можно хранить постоянно, но не сортировать? Например,

coll = Analytic.collection.map_reduce(map, reduce, 
                                        :out => 'analyticsCachedResult')

вышеуказанное сохраняется постоянно, но не сортируется.

Чтобы отсортировать на лету, это может быть

coll.find({}, :sort => ['value.pageviews', :desc]) 

Но вы можете отсортировать таблицу внутри? Я думаю, что если для ключа сортировки создан индекс, то он будет почти так же хорош, как внутренняя сортировка?

Или, как мы можем отсортировать ее и сохранить как новую коллекцию analyticsSortedCachedResult?

Я думаю, позже, чтобы получить любую коллекцию, используя Mongoid, это

coll = Mongoid.master.collection('analyticsCachedResult')

? но я просто обеспокоен тем, что, поскольку Mongoid.master.collection('foo') все равно вернет коллекцию, даже если коллекция не существует. Но похоже, что он также не сохраняется в MongoDB.

1 Ответ

1 голос
/ 24 сентября 2010

MapReduce в MongoDB выводит в обычную коллекцию, так что вы можете использовать все функции, к которым вы привыкли, включая сортировку или даже другую передачу MapReduce для вывода. У вас могут быть проблемы с сортировкой большой коллекции без индекса по ключу сортировки.

...