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
Attributes
inserted_ids[R]
Get the ids of the inserted documents.
@since 2.0.0
Public Class Methods
new(replies, ids)
click to toggle source
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 [ Array<Object> ] ids The ids of the inserted documents.
@since 2.0.0
# File lib/mongo/operation/insert/bulk_result.rb, line 39 def initialize(replies, ids) @replies = [*replies] if replies 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
inserted_id()
click to toggle source
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
# File lib/mongo/operation/insert/bulk_result.rb, line 94 def inserted_id inserted_ids.first end
n_inserted()
click to toggle source
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
# File lib/mongo/operation/insert/bulk_result.rb, line 82 def n_inserted written_count end