class Mongo::Operation::Write::Update

A MongoDB update operation.

@note If the server version is >= 2.5.5, a write command operation

will be created and sent instead.

@example Create the update operation.

Write::Update.new({
  :update =>
    {
      :q => { :foo => 1 },
      :u => { :$set => { :bar => 1 }},
      :multi  => true,
      :upsert => false
    },
  :db_name => 'test',
  :coll_name => 'test_coll',
  :write_concern => write_concern
})

Initialization:

param [ Hash ] spec The specifications for the update.

option spec :update [ Hash ] The update document.
option spec :db_name [ String ] The name of the database on which
  the query should be run.
option spec :coll_name [ String ] The name of the collection on which
  the query should be run.
option spec :write_concern [ Mongo::WriteConcern ] The write concern.
option spec :options [ Hash ] Options for the command, if it ends up being a
  write command.

@since 2.0.0

Private Instance Methods

has_collation?() click to toggle source
# File lib/mongo/operation/write/update.rb, line 66
def has_collation?
  update[:collation] || update[Operation::COLLATION]
end
message(server) click to toggle source
# File lib/mongo/operation/write/update.rb, line 70
def message(server)
  flags = []
  flags << :multi_update if update[Operation::MULTI]
  flags << :upsert if update[Operation::UPSERT]
  Protocol::Update.new(
    db_name,
    coll_name,
    update[Operation::Q],
    update[Operation::U],
    flags.empty? ? {} : { flags: flags }
  )
end
write_command_op() click to toggle source
# File lib/mongo/operation/write/update.rb, line 60
def write_command_op
  s = spec.merge(:updates => [ update ])
  s.delete(:update)
  Command::Update.new(s)
end