Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Mongoid:上的急切加载计数有很多关联_Ruby On Rails_Ruby_Mongodb_Mongoid - Fatal编程技术网

Ruby on rails Mongoid:上的急切加载计数有很多关联

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

我是mongodb的新手

我试图列出一些文档,我的类有一个
关联,我想显示这个关联中的文档数

我需要做一些快速加载吗

如果我使用
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