【问题标题】:Retrieve list of mongo documents by ids preserving order通过 ids 保留顺序检索 mongo 文档列表
【发布时间】: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 查询接口似乎应该有更好的解决方案。有任何想法吗?

【问题讨论】:

    标签: ruby mongodb mongoid


    【解决方案1】:

    如果 id 的数量很少,您可能会侥幸逃脱(但无需对其进行排序):

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

    当然,缺点是它仍然会为每个文档进入数据库。

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

    【讨论】:

      猜你喜欢
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 2020-10-01
      • 2016-03-21
      • 1970-01-01
      • 2020-11-02
      • 2018-06-01
      • 1970-01-01
      相关资源
      最近更新 更多