你可以暂时禁用mongoid关系来滚动你自己的查询

时间:2017-03-07 00:24:23

标签: ruby-on-rails mongoid eager-loading

我正在尝试手动构建一系列查询来解决mongo缺少连接和mongoid缺乏急切加载的问题。假设我有两个班级:

class A
include Mongoid::Document
has_many :bs
...

class B
include Mongoid::Document
belongs_to :a
...

如果我在bs上运行查询:

bs = B.where(...)

结果是MongoidCriteria

但是,如果我尝试通过调用bs.first来获取第一个b,它会立即触发关联的mongo查询。这正是我想要避免的(如果我有1000个b,我试图避免1000个单例b查询)。

这很好,但是当我有复杂的关系时,我想通过自己手动指定模型,收集id以及唯一返回核心模型而没有关联来解决缺乏急切加载的问题。

有什么能让我这样做吗?类似的东西:

bs = B.where(...).disable_automatic_association_queries

这样的事情存在吗?

1 个答案:

答案 0 :(得分:0)

方法是.without。例如:

A.where(...).without(:bs)