通过id保留顺序检索mongo文档列表

时间:2011-04-10 15:02:48

标签: ruby mongodb mongoid

这是使用mongoid按照列表中指定的顺序检索mongodb文档列表的最佳方法。

我目前的解决方案是:

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

似乎应该有一个更好的解决方案,使用mongoid查询接口。有任何想法吗?

1 个答案:

答案 0 :(得分:3)

如果id的数量很小,你可能会侥幸逃脱(不需要对它进行排序):

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

缺点当然是它仍将转到每个文档的数据库。

我能找到的最接近的方法是Doc.criteria.for_ids(ids)但是它不会遵循id的顺序并且只获取每个文档一次。请参阅this question