类:Mongo::Collection::View::Builder::Aggregation

继承:
对象
  • 对象
显示全部
扩展方式:
可转发
定义于:
构建/ruby-driver-v2.19/lib/ mongo / 集合/view/builder/ 聚合.rb

Overview

从视图和选项构建聚合命令规范。

由于:

  • 2.2.0

常量摘要折叠

MAPPINGS =

从 Ruby 选项到聚合选项的映射。

由于:

  • 2.2.0

BSON::文档.new(
  allow_disk_use: 'allowDiskUse',
  bypass_document_validation: ' bypassDocumentValidation ',
  解释: ' explain ',
  排序规则: ' collation ',
  comment: 'comment',
  hint: ' hint ',
  让: ' let ',
  # 这是故意的; max_await_time_ms 是 maxTimeMS 的别名
  # 用于变更流的 getMore 命令。
  max_await_time_ms: 'maxTimeMS',
  max_time_ms: 'maxTimeMS',
).冻结

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

#initialize (pipeline, view, options) ⇒聚合

初始化构建器。

参数:

  • 管道 ( Array<Hash> )

    聚合管道。

  • 查看 ( Collection::View )

    集合视图。

  • 选项 (哈希)

    map/reduce 和读取偏好(read preference)选项。

由于:

  • 2.2.0



64
65
66
67
68
# File 'build/Ruby-driver-v 2.19 /lib/mongo/collection/view/builder/aggregation.rb', 第64行

def 初始化(管道, 查看, 选项)
  管道 = 管道
  @view = 查看
  @options = 选项
end

实例属性详细信息

# options哈希(只读)

返回 options map/reduce 特定选项。

返回:

  • (哈希)

    options map/reduce 特定选项。

由于:

  • 2.2.0



55
56
57
# File 'build/Ruby-driver-v 2.19 /lib/mongo/collection/view/builder/aggregation.rb', 第55行

def 选项
  @options
end

# 管道Array<Hash> (只读)

返回管道管道。

返回:

  • ( Array<Hash> )

    管道管道。

由于:

  • 2.2.0



49
50
51
# File 'build/Ruby-driver-v 2.19 /lib/mongo/collection/view/builder/aggregation.rb', 第49行

def 管道
  管道
end

# viewCollection::View (readonly)

返回视图集合视图。

返回:

由于:

  • 2.2.0



52
53
54
# File 'build/Ruby-driver-v 2.19 /lib/mongo/collection/view/builder/aggregation.rb', 第52行

def 查看
  @view
end

实例方法详细信息

#规范哈希

获取要传递给聚合操作的规范。

例子:

获取规范。

builder.specification

返回:

  • (哈希)

    规范。

由于:

  • 2.2.0



78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'build/Ruby-driver-v 2.19 /lib/mongo/collection/view/builder/aggregation.rb', 第78行

def 规范
  spec = {
    选择器: aggregation_command,
    db_name: database.名称,
    读取: @options[:read_preference] || 查看.read_preference,
    会话: @options[:session],
    排序规则: @options[:collation],
  }
  if 写入?
    spec.update(write_concern: write_concern)
  end
  spec
end