gpt4 book ai didi

ruby-on-rails - Mongoid : Eager loading count on has_many association

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:29 25 4
gpt4 key购买 nike

我是 mongodb 的新手。

我正在尝试列出一些文档,我的类有一个 has_many 关联,我想显示来自该关联的文档数。

我需要做一些预先加载吗?

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

身份映射已启用

最佳答案

我不知道有什么方法可以防止预先加载加载完整文档。我很想知道现在是否可行。

你可以这样得到计数:

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

关于ruby-on-rails - Mongoid : Eager loading count on has_many association,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15844962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com