Class: Mongo::Operation::Aggregate::Result
- Defined in:
- lib/mongo/operation/aggregate/result.rb
Overview
Defines custom behavior of results in an aggregation context.
Constant Summary collapse
- EXPLAIN =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
The field name for the aggregation explain information.
'stages'.freeze
- EXPLAIN_LEGACY =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
The legacy field name for the aggregation explain information.
'serverPipeline'.freeze
Constants inherited from Result
Result::CURSOR, Result::CURSOR_ID, Result::FIRST_BATCH, Result::N, Result::NAMESPACE, Result::NEXT_BATCH, Result::OK, Result::RESULT
Instance Attribute Summary
Attributes inherited from Result
#connection, #connection_description, #connection_global_id, #context, #replies
Instance Method Summary collapse
-
#cursor_id ⇒ Integer
private
Get the cursor id for the result.
-
#documents ⇒ Array<BSON::Document>
Get the documents for the aggregation result.
-
#post_batch_resume_token ⇒ BSON::Document | nil
private
Get the post batch resume token for the result.
Methods inherited from Result
#acknowledged?, #cluster_time, #each, #error, #has_cursor_id?, #initialize, #inspect, #labels, #namespace, #ok?, #operation_time, #reply, #returned_count, #snapshot_timestamp, #successful?, #topology_version, #validate!, #write_concern_error?, #written_count
Constructor Details
This class inherits a constructor from Mongo::Operation::Result
Instance Method Details
#cursor_id ⇒ Integer
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.
Even though the wire protocol has a cursor_id field for all messages of type reply, it is always zero when using the aggregation framework and must be retrieved from the cursor document itself. Wahnsinn!
Get the cursor id for the result.
54 55 56 |
# File 'lib/mongo/operation/aggregate/result.rb', line 54 def cursor_id cursor_document ? cursor_document[CURSOR_ID] : 0 end |
#documents ⇒ Array<BSON::Document>
Get the documents for the aggregation result. This is either the first document’s ‘result’ field, or if a cursor option was selected, it is the ‘firstBatch’ field in the ‘cursor’ field of the first document returned. Otherwise, it is an explain document.
79 80 81 82 83 84 |
# File 'lib/mongo/operation/aggregate/result.rb', line 79 def documents docs = reply.documents[0][RESULT] docs ||= cursor_document[FIRST_BATCH] if cursor_document docs ||= explain_document docs end |
#post_batch_resume_token ⇒ BSON::Document | nil
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 post batch resume token for the result
63 64 65 |
# File 'lib/mongo/operation/aggregate/result.rb', line 63 def post_batch_resume_token cursor_document ? cursor_document['postBatchResumeToken'] : nil end |