BulkWrite — Documentation by YARD 0.9.37 (original) (raw)

Class: Mongo::BulkWrite

Inherits:

Object

Extended by:

Forwardable

Includes:

Operation::ResponseHandling

Defined in:

lib/mongo/bulk_write.rb,
lib/mongo/bulk_write/result.rb,
lib/mongo/bulk_write/combineable.rb,
lib/mongo/bulk_write/validatable.rb,
lib/mongo/bulk_write/transformable.rb,
lib/mongo/bulk_write/result_combiner.rb,
lib/mongo/bulk_write/ordered_combiner.rb,
lib/mongo/bulk_write/unordered_combiner.rb

Defined Under Namespace

Modules: Combineable, Transformable, Validatable Classes: OrderedCombiner, Result, ResultCombiner, UnorderedCombiner

Instance Attribute Summary collapse

Instance Method Summarycollapse

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.

| 128 129 130 131 132 133 134 135 | # File 'lib/mongo/bulk_write.rb', line 128 def initialize(collection, requests, options = {}) @collection = collection @requests = requests @options = options || {} if @options[:timeout_ms] && @options[:timeout_ms] < 0 raise ArgumentError, "timeout_ms options must be non-negative integer" end end | | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

Instance Attribute Details

#collectionMongo::Collection

Returns collection The collection.

32 33 34 # File 'lib/mongo/bulk_write.rb', line 32 def collection @collection end

#options ⇒ Hash, BSON::Document

Returns options The options.

38 39 40 # File 'lib/mongo/bulk_write.rb', line 38 def options @options end

#requests ⇒ Array<Hash, BSON::Document>

Returns requests The requests.

35 36 37 # File 'lib/mongo/bulk_write.rb', line 35 def requests @requests end

Instance Method Details

#executeMongo::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 99 100 | # File 'lib/mongo/bulk_write.rb', line 58 def execute operation_id = Monitoring.next_operation_id result_combiner = ResultCombiner.new operations = op_combiner.combine validate_requests! deadline = calculate_deadline client.with_session(@options) do |session| operations.each do | operation| context = Operation::Context.new( client: client, session: session, operation_timeouts: { operation_timeout_ms: op_timeout_ms(deadline) } ) if single_statement?(operation) write_concern = write_concern(session) write_with_retry(write_concern, context: context) do | connection, txn_num, context| execute_operation( operation.keys.first, operation.values.flatten, connection, context, operation_id, result_combiner, session, txn_num) end else nro_write_with_retry(write_concern, context: context) do | connection, txn_num, context| execute_operation( operation.keys.first, operation.values.flatten, connection, context, operation_id, result_combiner, session) 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?

| 147 148 149 | # File 'lib/mongo/bulk_write.rb', line 147 def ordered? @ordered ||= options.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.

| 161 162 163 164 165 | # File 'lib/mongo/bulk_write.rb', line 161 def write_concern(session = nil) @write_concern ||= options[:write_concern] ? WriteConcern.get(options[:write_concern]) : collection.write_concern_with_session(session) end | | ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |