【发布时间】:2011-08-02 12:38:59
【问题描述】:
使用 mongoid 按照列表中指定的顺序检索 mongodb 文档列表的最佳方式是什么。
我目前的解决方案是:
docs = Doc.where(:_id.in => ids).sort { |x, y| ids.index(x.id) <=> ids.index(y.id) }
使用 mongoid 查询接口似乎应该有更好的解决方案。有任何想法吗?
【问题讨论】:
使用 mongoid 按照列表中指定的顺序检索 mongodb 文档列表的最佳方式是什么。
我目前的解决方案是:
docs = Doc.where(:_id.in => ids).sort { |x, y| ids.index(x.id) <=> ids.index(y.id) }
使用 mongoid 查询接口似乎应该有更好的解决方案。有任何想法吗?
【问题讨论】:
如果 id 的数量很少,您可能会侥幸逃脱(但无需对其进行排序):
docs = ids.map { |id| Doc.find(id) }
当然,缺点是它仍然会为每个文档进入数据库。
我能找到的最接近的方法是Doc.criteria.for_ids(ids),但它不会遵守 id 的顺序并且只获取每个文档一次。见this question。
【讨论】: