Class: Mongo::BulkWrite
- Inherits:
-
Object
- Object
- Mongo::BulkWrite
- Extended by:
- Forwardable
- Includes:
- Operation::ResponseHandling
- Defined in:
- build/ruby-driver-v2.17/lib/mongo/bulk_write.rb,
build/ruby-driver-v2.17/lib/mongo/bulk_write/result.rb,
build/ruby-driver-v2.17/lib/mongo/bulk_write/combineable.rb,
build/ruby-driver-v2.17/lib/mongo/bulk_write/validatable.rb,
build/ruby-driver-v2.17/lib/mongo/bulk_write/transformable.rb,
build/ruby-driver-v2.17/lib/mongo/bulk_write/result_combiner.rb,
build/ruby-driver-v2.17/lib/mongo/bulk_write/ordered_combiner.rb,
build/ruby-driver-v2.17/lib/mongo/bulk_write/unordered_combiner.rb
Defined Under Namespace
Modules: Combineable, Transformable, Validatable Classes: OrderedCombiner, Result, ResultCombiner, UnorderedCombiner
Instance Attribute Summary collapse
-
#collection ⇒ Mongo::Collection
readonly
Collection The collection.
-
#options ⇒ Hash, BSON::Document
readonly
Options The options.
-
#requests ⇒ Array<Hash, BSON::Document>
readonly
Requests The requests.
Instance Method Summary collapse
-
#execute ⇒ Mongo::BulkWrite::Result
Execute the bulk write operation.
-
#initialize(collection, requests, options = {}) ⇒ BulkWrite
constructor
private
Create the new bulk write operation.
-
#ordered? ⇒ true, false
private
Is the bulk write ordered?.
-
#write_concern(session = nil) ⇒ WriteConcern
private
Get the write concern for the bulk write.
Constructor Details
#initialize(collection, requests, options = {}) ⇒ BulkWrite
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Create the new bulk write operation.
125 126 127 128 129 |
# File 'build/ruby-driver-v2.17/lib/mongo/bulk_write.rb', line 125 def initialize(collection, requests, = {}) @collection = collection @requests = requests @options = || {} end |
Instance Attribute Details
#collection ⇒ Mongo::Collection (readonly)
Returns collection The collection.
32 33 34 |
# File 'build/ruby-driver-v2.17/lib/mongo/bulk_write.rb', line 32 def collection @collection end |
#options ⇒ Hash, BSON::Document (readonly)
Returns options The options.
38 39 40 |
# File 'build/ruby-driver-v2.17/lib/mongo/bulk_write.rb', line 38 def @options end |
#requests ⇒ Array<Hash, BSON::Document> (readonly)
Returns requests The requests.
35 36 37 |
# File 'build/ruby-driver-v2.17/lib/mongo/bulk_write.rb', line 35 def requests @requests end |
Instance Method Details
#execute ⇒ Mongo::BulkWrite::Result
Execute the bulk write operation.
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 96 97 98 |
# File 'build/ruby-driver-v2.17/lib/mongo/bulk_write.rb', line 58 def execute operation_id = Monitoring.next_operation_id result_combiner = ResultCombiner.new operations = op_combiner.combine client.send(:with_session, @options) do |session| context = Operation::Context.new(client: client, session: session) operations.each do |operation| if single_statement?(operation) write_concern = write_concern(session) write_with_retry(session, write_concern) do |server, txn_num| server.with_connection(service_id: context.service_id) do |connection| execute_operation( operation.keys.first, operation.values.flatten, connection, context, operation_id, result_combiner, session, txn_num) end end else nro_write_with_retry(session, write_concern) do |server| server.with_connection(service_id: context.service_id) do |connection| execute_operation( operation.keys.first, operation.values.flatten, connection, context, operation_id, result_combiner, session) end end end end end result_combiner.result end |
#ordered? ⇒ true, false
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Is the bulk write ordered?
141 142 143 |
# File 'build/ruby-driver-v2.17/lib/mongo/bulk_write.rb', line 141 def ordered? @ordered ||= .fetch(:ordered, true) end |
#write_concern(session = nil) ⇒ WriteConcern
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Get the write concern for the bulk write.
155 156 157 158 159 |
# File 'build/ruby-driver-v2.17/lib/mongo/bulk_write.rb', line 155 def write_concern(session = nil) @write_concern ||= [:write_concern] ? WriteConcern.get([:write_concern]) : collection.write_concern_with_session(session) end |