类:Mongoid::Association::Eager

继承:
对象
  • 对象
显示全部
定义于:
lib/mongoid/association/eager.rb

Overview

预先加载预加载函数的基类。

实例方法摘要折叠

构造函数详情

#initialize(associations, docs, use_lookup = false, 管道 = []) ⇒ 基础

实例化急切加载类。

例子:

创建属于预加载的新预加载器。

BelongsTo.new(association, parent_docs)

参数:

  • 关联 ( Array< Mongoid::Association::Relatable > )

    与预先加载的关联

  • docs ( Array< Document > )

    用于预加载关联的文档

  • use_lookup 布尔值 (默认为: false

    是否使用 $lookup聚合进行预先加载。这在 Criteria#eager_load 中使用。

  • 管道 ( Array<Hash> ) (默认为: []

    使用 $lookup 进行预先加载时要使用的聚合管道。



21
22
23
24
25
26
27
# File 'lib/mongoid/association/eager.rb', line 21

def 初始化(关联, docs, use_lookup = false, 管道 = [])
  @associations = 关联
  @docs = docs
  @grouped_docs = {}
  @use_lookup = use_lookup
  管道 = 管道
end

实例方法详细信息

# run数组

运行预加载器。

例子:

将关联预加载到文档中。

loader.run

返回:

  • ( Array )

    给出的文档列表。



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/mongoid/association/eager.rb', line 35

def 运行
  @loaded = []

  if @use_lookup
    preload_with_lookup
    @loaded = @docs
    return @loaded.展平
  end

  while shift_association
    预加载
    @loaded << @docs.收集 { |d| d.发送(@association.名称) if d.respond_to?(@association.名称) }
  end
  @loaded.展平
end