class Mongo::Operation::Commands::Aggregate

A MongoDB aggregate operation.

@note An aggregate operation can behave like a read and return a

result set, or can behave like a write operation and
output results to a user-specified collection.

@example Create the aggregate operation.

Aggregate.new({
  :selector => {
    :aggregate => 'test_coll', :pipeline => [{ '$out' => 'test-out' }]
  },
  :db_name => 'test_db'
})

Initialization:

param [ Hash ] spec The specifications for the operation.

option spec :selector [ Hash ] The aggregate selector.
option spec :db_name [ String ] The name of the database on which
  the operation should be executed.
option spec :options [ Hash ] Options for the aggregate command.

@since 2.0.0

Aggregate result wrapper.

@since 2.0.0

Private Instance Methods

message(server) click to toggle source
# File lib/mongo/operation/commands/aggregate.rb, line 48
def message(server)
  sel = update_selector_for_write_concern(selector, server)
  if server.features.op_msg_enabled?
    command_op_msg(server, sel, options)
  else
    sel = update_selector_for_read_pref(sel, server)
    opts = update_options_for_slave_ok(options, server)
    Protocol::Query.new(db_name, query_coll, sel, opts)
  end
end