Class: Mongo::Operation::Update::BulkResult Private
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
::Mongo::Operation::Result,
Forwardable
|
|
|
Instance Chain:
self,
Aggregatable,
::Mongo::Operation::Result,
Enumerable
|
|
| Inherits: |
Mongo::Operation::Result
|
| Defined in: | lib/mongo/operation/update/bulk_result.rb |
Overview
Defines custom behavior of results for an udpate when sent as part of a bulk write.
Constant Summary
-
MODIFIED =
# File 'lib/mongo/operation/update/bulk_result.rb', line 31
The number of modified docs field in the result.
'nModified'.freeze
-
UPSERTED =
# File 'lib/mongo/operation/update/bulk_result.rb', line 36
The upserted docs field in the result.
'upserted'.freeze
::Mongo::Operation::Result - Inherited
CURSOR, CURSOR_ID, FIRST_BATCH, N, NAMESPACE, NEXT_BATCH, OK, RESULT
Class Method Summary
::Mongo::Operation::Result - Inherited
| .new | Initialize a new result. |
Instance Attribute Summary
::Mongo::Operation::Result - Inherited
| #acknowledged? | Is the result acknowledged? |
| #connection, #connection_description, #connection_global_id, #context, | |
| #has_cursor_id? | Whether the result contains cursor_id. |
| #ok? | Check the first document’s ok field. |
| #replies, | |
| #successful? | If the result was a command then determine if it was considered a success. |
| #write_concern_error? | Whether the operation failed with a write concern error. |
| #query_failure? | |
Instance Method Summary
-
#n_matched ⇒ Integer
Internal use only
Gets the number of documents matched.
-
#n_modified ⇒ Integer
Internal use only
Gets the number of documents modified.
-
#n_upserted ⇒ Integer
Internal use only
Gets the number of documents upserted.
-
#upserted ⇒ Array<BSON::Document>
Internal use only
Get the upserted documents.
- #upsert?(reply) ⇒ Boolean private Internal use only
::Mongo::Operation::Result - Inherited
| #cluster_time | Get the cluster time reported in the server response. |
| #cursor_id | Get the cursor id if the response is acknowledged. |
| #documents | Get the documents in the result. |
| #each | Iterate over the documents in the replies. |
| #error | The exception instance (of Error::OperationFailure::Family) that would be raised during processing of this result. |
| #inspect | Get the pretty formatted inspection of the result. |
| #labels | Gets the set of error labels associated with the result. |
| #n | Alias for Result#written_count. |
| #namespace | Get the namespace of the cursor. |
| #operation_time | Get the operation time reported in the server response. |
| #reply | Get the reply from the result. |
| #returned_count | Get the number of documents returned by the server in this batch. |
| #snapshot_timestamp, #topology_version, | |
| #validate! | Validate the result by checking for any errors. |
| #written_count | Get the number of documents written by the server. |
| #aggregate_returned_count, #aggregate_written_count, #first_document, #operation_failure_class, #parser, | |
| #raise_operation_failure | Raises a Mongo::OperationFailure exception corresponding to the error information in this result. |
Instance Method Details
#n_matched ⇒ Integer
Gets the number of documents matched.
# File 'lib/mongo/operation/update/bulk_result.rb', line 65
def n_matched return 0 unless acknowledged? @replies.reduce(0) do |n, reply| if upsert?(reply) reply.documents.first[N] - n_upserted else if reply.documents.first[N] n += reply.documents.first[N] else n end end end end
#n_modified ⇒ Integer
Gets the number of documents modified. Not that in a mixed sharded cluster a call to update could return nModified (>= 2.6) or not (<= 2.4). If any call does not return nModified we can’t report a valid final count so set the field to nil.
#n_upserted ⇒ Integer
Gets the number of documents upserted.
#upsert?(reply) ⇒ Boolean (private)
# File 'lib/mongo/operation/update/bulk_result.rb', line 123
def upsert?(reply) upserted.any? end
#upserted ⇒ Array<BSON::Document>
Get the upserted documents.
# File 'lib/mongo/operation/update/bulk_result.rb', line 111
def upserted return [] unless acknowledged? @replies.reduce([]) do |ids, reply| if upserted_ids = reply.documents.first[UPSERTED] ids += upserted_ids end ids end end