class Mongo::Operation::Insert::BulkResult
Defines custom behavior of results for an insert when sent as part of a bulk write.
@since 2.0.0 @api semiprivate
Attributes
Get the ids of the inserted documents.
@since 2.0.0 @api public
Public Class Methods
Initialize a new result.
@example Instantiate the result.
Result.new(replies, inserted_ids)
@param [ Array<Protocol::Message> | nil ] replies The wire protocol replies, if any. @param [ Server::Description
] connection_description
Server description of the server that performed the operation that this result is for.
@param [ Array<Object> ] ids The ids of the inserted documents.
@since 2.0.0 @api private
# File lib/mongo/operation/insert/bulk_result.rb, line 48 def initialize(replies, connection_description, ids) @replies = [*replies] if replies @connection_description = connection_description if replies && replies.first && (doc = replies.first.documents.first) if errors = doc['writeErrors'] # some documents were potentially inserted bad_indices = {} errors.map do |error| bad_indices[error['index']] = true end @inserted_ids = [] ids.each_with_index do |id, index| if bad_indices[index].nil? @inserted_ids << id end end # I don't know if acknowledged? check here is necessary, # as best as I can tell it doesn't hurt elsif acknowledged? && successful? # We have a reply and the reply is successful and the # reply has no writeErrors - everything got inserted @inserted_ids = ids else # We have a reply and the reply is not successful and # it has no writeErrors - nothing got inserted. # If something got inserted the reply will be not successful # but will have writeErrors @inserted_ids = [] end else # I don't think we should ever get here but who knows, # make this behave as old drivers did @inserted_ids = ids end end
Public Instance Methods
Gets the id of the document inserted.
@example Get id of the document inserted.
result.inserted_id
@return [ Object ] The id of the document inserted.
@since 2.0.0 @api public
# File lib/mongo/operation/insert/bulk_result.rb, line 106 def inserted_id inserted_ids.first end
Gets the number of documents inserted.
@example Get the number of documents inserted.
result.n_inserted
@return [ Integer ] The number of documents inserted.
@since 2.0.0 @api public
# File lib/mongo/operation/insert/bulk_result.rb, line 93 def n_inserted written_count end