Mongoid:渴望加载计数has_many关联

时间:2013-04-05 22:58:27

标签: ruby-on-rails ruby mongodb mongoid

我是mongodb的新手。

我正在尝试列出一些文档,我的班级有一个has_many关联,我想显示这个关联的文档数量。

我需要做一些急切的加载吗?

如果我使用includes将加载所有文件,我只想要计数。

启用身份地图

1 个答案:

答案 0 :(得分:0)

我不知道如何阻止加载整个文档的急切加载。我很想知道现在是否可能。

你可以这样计算:

ChildDoc.where(myclass_id: myclass_obj.id).count

因此,您要查询关联的隐式创建的外键字段。这仍然是每个父文档的查询,但理想的快速查询。

如果perf是您真正关心的问题,那么您可以编写一个单独的查询,但只需一次访问即可返回更多数据 - 包含文档的所有ID - 如下所示:

ChildDoc.where(myclass_id: {"$in" => list_of_myclass_objs.map {|x| x.id}}).only(:id, :myclass_id)

由于你是新手,我会补充说你可能想自己在FK字段上创建索引 - mongoid不会为你做这个。

class ChildDoc
    include Mongoid::Document
    belongs_to :myclass
    index({ myclass_id: 1 })
end

然后

rake db:mongoid:create_indexes