Ruby on rails Mongoid:上的急切加载计数有很多关联
我是mongodb的新手 我试图列出一些文档,我的类有一个Ruby on rails Mongoid:上的急切加载计数有很多关联,ruby-on-rails,ruby,mongodb,mongoid,Ruby On Rails,Ruby,Mongodb,Mongoid,我是mongodb的新手 我试图列出一些文档,我的类有一个关联,我想显示这个关联中的文档数 我需要做一些快速加载吗 如果我使用includes将加载所有文档,我只需要计数 身份映射已启用我不知道有什么方法可以阻止急于加载来加载完整文档。我很想知道现在这是否可行 您可以这样获得计数: ChildDoc.where(myclass_id: myclass_obj.id).count ChildDoc.where(myclass_id: {"$in" => list_of_myclass_ob
关联,我想显示这个关联中的文档数
我需要做一些快速加载吗
如果我使用includes
将加载所有文档,我只需要计数
身份映射已启用我不知道有什么方法可以阻止急于加载来加载完整文档。我很想知道现在这是否可行
您可以这样获得计数:
ChildDoc.where(myclass_id: myclass_obj.id).count
ChildDoc.where(myclass_id: {"$in" => list_of_myclass_objs.map {|x| x.id}}).only(:id, :myclass_id)
因此,您正在查询关联的隐式创建的外键字段。这仍然是对每个父文档的查询,但理想的快速查询
如果perf是您真正关心的问题,那么您可以编写一个查询来返回更多数据,但只需一次查询——包含文档的所有ID——如下所示:
ChildDoc.where(myclass_id: myclass_obj.id).count
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