2

我是 mongodb 的新手。

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

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

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

身份映射已启用

4

1 回答 1

0

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

你可以得到这样的计数:

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

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

如果性能是您真正关心的问题,您可以编写一个查询,该查询将返回更多数据,但在一次行程中——包含文档的所有 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
于 2013-04-06T06:05:58.403 回答