Rails + MongoDB 未返回 collection 中的所有文档

Rails + MongoDB not returning all documents in collection

我需要我的一个 collection 中的所有文档来创建我的 parent 模型与 child 之间的关联。问题是我只有 ObjectId 的字符串。所以我通过字符串找到 object,然后通过 parent.child = foundObject 设置。因此,为了实现这一点,我创建了一个私有方法,如下所示,每次我需要 child object.

时都不会创建数据库请求
def childs
   @childs ||= Child.all
end

但这没有按预期工作。当我 运行 ModelName.all 结果低于 returns 时;并非 collection.

中的所有文档
=> 
#<Mongoid::Criteria
  selector: {}
  options:  {}
  class:    ModelName
  embedded: false>

这会导致我的循环在每次我尝试将 child 关联到 parent 时创建另一个数据库请求。我使用以下方法防止这种情况。

def childs
   @childs ||= Child.all.select { |v| v.id.present? }
end

我相信应该有一种方法可以收集 MongoDB 中的所有文档,我知道 Mongoid::Criteria 的概念及其实际作用。但在某些情况下,我需要将所有 object 存储在一个变量中。不想每次在模型中需要一个特定文档时都创建不需要的数据库查询。

我找不到解决这个特定问题的方法,我认为这是不可能的,因为 MongoDB 不是关系数据库。很难在查询的同时收集信息。我使用的是“MongoDB views”,这解决了很多问题。 Here 是文档。您可以在那里阅读并找到解决问题的方法。