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

filter_cursor_from_selector(sel, server) click to toggle source
# File lib/mongo/operation/commands/aggregate.rb, line 47
def filter_cursor_from_selector(sel, server)
  return sel if server.features.write_command_enabled?
  sel.reject{ |option, value| option.to_s == 'cursor' }
end
message(server) click to toggle source
# File lib/mongo/operation/commands/aggregate.rb, line 52
def message(server)
  sel = update_selector_for_read_pref(selector, server)
  sel = filter_cursor_from_selector(sel, server)
  sel = update_selector_for_write_concern(sel, server)
  opts = update_options_for_slave_ok(options, server)
  Protocol::Query.new(db_name, query_coll, sel, opts)
end