模块:Mongoid::Criteria::Includable

包含在:
Mongoid::Criteria
定义于:
lib/mongoid/criteria/includable.rb

Overview

提供解析(嵌套)包含定义功能的模块。

实例方法摘要折叠

实例方法详细信息

#ager_load(*relations) ⇒ Criteria

立即加载使用聚合$lookup 提供的所有关联。行为应与 #includes 相同。

例子:

预先加载所提供的关联。

Person.eager_load(:posts, :game)

参数:

  • *relations ( [Symbol | Hash]... )

    要预先加载的关联的名称。

返回:



41
42
43
44
45
# File 'lib/mongoid/criteria/includable.rb', line 41

def ager_load(*关系)
  extract_includes_list(klass, nil, true, *关系)
  @use_lookup = !嵌入式?
  克隆
end

#includes (*relations) ⇒ Criteria

注意:

这也适用于通过 belongs_to 引用另一个集合的嵌入式关联。

注意:

预先加载会将所有文档都加载到内存中,因此可以实现性能提升的最佳平衡点。 内部基准测试显示,在100 k 个文档左右,预先加载会变慢,但这自然取决于特定的应用程序。

立即加载所有提供的关联。 将根据 ID 的额外查询将所有 ID 匹配的文档加载到身份映射中。

例子:

预先加载所提供的关联。

Person.includes(:posts, :game)

参数:

  • *relations ( [Symbol | Hash]... )

    要预先加载的关联的名称。

返回:



26
27
28
29
# File 'lib/mongoid/criteria/includable.rb', line 26

def 包括(*关系)
  extract_includes_list(klass, nil, false, *关系)
  克隆
end

#包含数组< Mongoid::Association::Relatable >

获取要执行的预先加载条件列表。

返回:



57
58
59
# File 'lib/mongoid/criteria/includable.rb', line 57

def 包含
  @inclusions ||= []
end

#includes = (value) ⇒ Array< Mongoid::Association::Relatable >

设置条件的包含内容。

参数:

返回:



66
67
68
# File 'lib/mongoid/criteria/includable.rb', line 66

def 包含项=()
  @inclusions = 
end

#use_lookup?true | false

返回是否使用 $lookup聚合进行预先加载。

返回:

  • ( true | false )

    是否使用 $lookup。



50
51
52
# File 'lib/mongoid/criteria/includable.rb', line 50

def use_lookup?
  !!@use_lookup
end