Class: Mongo::Protocol::Insert

Inherits:
Message
  • Object
show all
Defined in:
lib/mongo/protocol/insert.rb

Overview

MongoDB Wire protocol Insert message.

This is a client request message that is sent to the server in order to insert documents within a namespace.

The operation only has one flag :continue_on_error which the user can use to instruct the database server to continue processing a bulk insertion if one happens to fail (e.g. due to duplicate IDs). This makes builk insert behave similarly to a seires of single inserts, except lastError will be set if any insert fails, not just the last one.

If multiple errors occur, only the most recent will be reported by the getLastError mechanism.

Defined Under Namespace

Classes: Upconverter

Constant Summary

Constants inherited from Message

Message::BATCH_SIZE, Message::COLLECTION, Message::LIMIT, Message::MAX_MESSAGE_SIZE, Message::ORDERED, Message::Q

Instance Attribute Summary

Attributes inherited from Message

#request_id

Instance Method Summary collapse

Methods inherited from Message

#==, deserialize, #hash, #replyable?, #serialize, #set_request_id

Constructor Details

#initialize(database, collection, documents, options = {}) ⇒ Insert

Creates a new Insert message

Examples:

Insert a user document

Insert.new('xgen', 'users', [{:name => 'Tyler'}])

Insert serveral user documents and continue on errors

Insert.new('xgen', 'users', users, :flags => [:continue_on_error])

Parameters:

  • database (String, Symbol)

    The database to insert into.

  • collection (String, Symbol)

    The collection to insert into.

  • documents (Array<Hash>)

    The documents to insert.

  • options (Hash) (defaults to: {})

    Additional options for the insertion.

Options Hash (options):

  • :flags (Array)

    The flags for the insertion message.

    Supported flags: :continue_on_error



51
52
53
54
55
56
57
58
59
# File 'lib/mongo/protocol/insert.rb', line 51

def initialize(database, collection, documents, options = {})
  @database = database
  @namespace = "#{database}.#{collection}"
  @documents = documents
  @flags = options[:flags] || []
  @upconverter = Upconverter.new(collection, documents, options)
  @options = options
  super
end

Instance Method Details

#payloadHash

Return the event payload for monitoring.

Examples:

Return the event payload.

message.payload

Returns:

  • (Hash)

    The event payload.

Since:

  • 2.1.0



69
70
71
72
73
74
75
76
# File 'lib/mongo/protocol/insert.rb', line 69

def payload
  {
    command_name: 'insert',
    database_name: @database,
    command: upconverter.command,
    request_id: request_id
  }
end