class Mongo::Operation::MapReduce::Result

Defines custom behavior of results for a map reduce operation.

@since 2.0.0

Constants

COUNTS

The counts field for the map/reduce.

@since 2.0.0

RESULTS

The field name for a result without a cursor.

@since 2.0.0

TIME

The time the operation took constant.

@since 2.0.0

Public Instance Methods

counts() click to toggle source

Gets the map/reduce counts from the reply.

@example Get the counts.

result.counts

@return [ Hash ] A hash of the result counts.

@since 2.0.0

# File lib/mongo/operation/map_reduce/result.rb, line 47
def counts
  reply.documents[0][COUNTS]
end
cursor_id() click to toggle source

Get the cursor id.

@example Get the cursor id.

result.cursor_id

@return [ Integer ] Always 0 because map reduce doesn't return a cursor.

@since 2.5.0

# File lib/mongo/operation/map_reduce/result.rb, line 117
def cursor_id
  0
end
documents() click to toggle source

Get the documents from the map/reduce.

@example Get the documents.

result.documents

@return [ Array<BSON::Document> ] The documents.

@since 2.0.0

# File lib/mongo/operation/map_reduce/result.rb, line 59
def documents
  reply.documents[0][RESULTS] || reply.documents[0][RESULT]
end
successful?() click to toggle source

If the result was a command then determine if it was considered a success.

@note If the write was unacknowledged, then this will always return

true.

@example Was the command successful?

result.successful?

@return [ true, false ] If the command was successful.

@since 2.0.0

# File lib/mongo/operation/map_reduce/result.rb, line 75
def successful?
  !documents.nil?
end
time() click to toggle source

Get the execution time of the map/reduce.

@example Get the execution time.

result.time

@return [ Integer ] The executing time in milliseconds.

@since 2.0.0

# File lib/mongo/operation/map_reduce/result.rb, line 87
def time
  reply.documents[0][TIME]
end
validate!() click to toggle source

Validate the result by checking for any errors.

@note This only checks for errors with writes since authentication is

handled at the connection level and any authentication errors would
be raised there, before a Result is ever created.

@example Validate the result.

result.validate!

@raise [ Error::OperationFailure ] If an error is in the result.

@return [ Result ] The result if verification passed.

@since 2.0.0

# File lib/mongo/operation/map_reduce/result.rb, line 105
def validate!
  documents.nil? ? raise_operation_failure : self
end

Private Instance Methods

first_document() click to toggle source
# File lib/mongo/operation/map_reduce/result.rb, line 123
def first_document
  @first_document ||= reply.documents[0]
end