类:Mongo::BulkWrite

继承:
对象
  • 对象
显示全部
扩展方式:
可转发
包括:
Operation::ResponseHandling
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/bulk_write.rb ,
build/Ruby-driver-v 2.19 /lib/mongo/bulk_write/result.rb,
build/Ruby-driver-v 2.19 /lib/mongo/bulk_write/combineable.rb,
build/Ruby-driver-v 2.19 /lib/mongo/bulk_write/validatable.rb,
build/Ruby-driver-v 2 。 19 /lib/mongo/bulk_write/transformable.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/bulk_write/result_combiner.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/bulk_write/ordered_combiner.rb,
build/Ruby-driver-v 2 . 19 /lib/mongo/bulk_write/unordered_combiner.rb

在命名空间下定义

模块: 组合、可 转换 可验证 类: OrderedCombiner 、 Result 、 ResultCombiner UnorderedCombiner

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

#initialize (collection, requests, options = {}) ⇒ BulkWrite

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

创建新的批量写入操作。

例子:

创建有序批量写入。

Mongo::BulkWrite.new(collection, [{ insert_one: { _id: 1 }}])

创建无序批量写入。

Mongo::BulkWrite.new(collection, [{ insert_one: { _id: 1 }}], ordered: false)

创建有序混合批量写入。

Mongo::BulkWrite.new(
  collection,
  [
    { insert_one: { _id: 1 }},
    { update_one: { filter: { _id: 0 }, update: { '$set' => { name: 'test' }}}},
    { delete_one: { filter: { _id: 2 }}}
  ]
)

参数:

  • 集合 ( Mongo::Collection )

    集合。

  • requests (Enumerable<Hash, BSON::Document>)

    请求不能为空。

  • 选项 哈希BSON::Document (默认为: {}

    选项。

由于:

  • 2.1.0



123
124
125
126
127
# File ' 构建/ruby-driver-v2.19/lib/ mongo /bulk_write.rb', line 123

def 初始化(集合, requests, 选项 = {})
  @collection = 集合
  @requests = requests
  @options = 选项 || {}
end

实例属性详细信息

# 集合Mongo::Collection (只读)

返回集合集合。

返回:



32
33
34
# File ' 构建/ruby-driver-v2.19/lib/ mongo /bulk_write.rb', line 32

def 集合
  @collection
end

# optionsHash , BSON::Document (readonly)

返回 options 选项。

返回:

  • ( Hash , BSON::Document )

    options 选项。



38
39
40
# File ' 构建/ruby-driver-v2.19/lib/ mongo /bulk_write.rb', line 38

def 选项
  @options
end

# requestsArray<Hash, BSON::Document> (只读)

返回 requests 请求。

返回:

  • ( Array<Hash, BSON::Document> )

    requests 请求。



35
36
37
# File ' 构建/ruby-driver-v2.19/lib/ mongo /bulk_write.rb', line 35

def requests
  @requests
end

实例方法详细信息

#执行Mongo::BulkWrite::Result

执行批量写入操作。

例子:

执行批量写入。

bulk_write.execute

返回:

由于:

  • 2.1.0



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File ' 构建/ruby-driver-v2.19/lib/ mongo /bulk_write.rb', line 58

def 执行
  operation_id = 监控.next_operation_id
  result_combiner = ResultCombiner.new
  操作 = op_combiner.结合
  validate_requests!

  客户端.发送(:with_session, @options) do |会话|
    上下文 = 操作::上下文.new(客户端: 客户端, 会话: 会话)
    操作. do |操作|
      if single_statement?(操作)
        write_concern = write_concern(会话)
        write_with_retry(write_concern, 上下文: 上下文) do |连接, txn_num, 上下文|
          execute_operation(
            操作.密钥.first,
            操作.values.展平,
            连接,
            上下文,
            operation_id,
            result_combiner,
            会话,
            txn_num)
        end
      else
        nro_write_with_retry(write_concern, 上下文: 上下文) do |连接, txn_num, 上下文|
          execute_operation(
            操作.密钥.first,
            操作.values.展平,
            连接,
            上下文,
            operation_id,
            result_combiner,
            会话)
        end
      end
    end
  end
  result_combiner.结果
end

#已订购?true , false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

批量写入是否已排序?

例子:

批量写入是否已排序?

bulk_write.ordered?

返回:

  • ( true , false )

    如果已订购批量写入。

由于:

  • 2.1.0



139
140
141
# File ' 构建/ruby-driver-v2.19/lib/ mongo /bulk_write.rb', line 139

def 已订购?
  @ordered ||= 选项.获取(:ordered, true)
end

# write_concern (session = nil) ⇒ WriteConcern

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

获取批量写入的写关注(write concern)。

例子:

获取写关注(write concern)。

bulk_write.write_concern

返回:

由于:

  • 2.1.0



153
154
155
156
157
# File ' 构建/ruby-driver-v2.19/lib/ mongo /bulk_write.rb', line 153

def write_concern(会话 = nil)
  @write_concern ||= 选项[:write_concern] ?
    writeConcern.获取(选项[:write_concern]) :
    集合.write_concern_with_session(会话)
end