Получить список документов монго по идентификатору, сохраняя порядок - PullRequest
2 голосов
/ 10 апреля 2011

Какой лучший способ получить список документов mongodb, используя mongoid в порядке, указанном в списке.

Мое текущее решение:

docs = Doc.where(:_id.in => ids).sort { |x, y| ids.index(x.id) <=> ids.index(y.id) }

Кажется, должно быть лучшее решение для этого с использованием интерфейса запросов mongoid. Есть идеи?

1 Ответ

3 голосов
/ 20 апреля 2011

Если количество идентификаторов невелико, вам может это сойти с рук (хотя сортировать его не нужно):

docs = ids.map { |id| Doc.find(id) }

Недостатком является, конечно, то, что он все равно будет идти в базу данных для каждого документа.

Ближайший метод, который я смог найти, это Doc.criteria.for_ids(ids), но он не будет соблюдать порядок идентификаторов и извлекать каждый документ только один раз.См этот вопрос .

...