Module: Mongo::Collection::View::Writable

Included in:
Mongo::Collection::View
Defined in:
lib/mongo/collection/view/writable.rb

Overview

Defines write related behaviour for collection view.

Since:

  • 2.0.0

Instance Method Summary collapse

Instance Method Details

#delete_manyResult

Remove documents from the collection.

Examples:

Remove multiple documents from the collection.

collection_view.delete_many

Returns:

  • (Result)

    The response from the database.

Since:

  • 2.0.0



115
116
117
# File 'lib/mongo/collection/view/writable.rb', line 115

def delete_many
  remove(0)
end

#delete_oneResult

Remove a document from the collection.

Examples:

Remove a single document from the collection.

collection_view.delete_one

Returns:

  • (Result)

    The response from the database.

Since:

  • 2.0.0



127
128
129
# File 'lib/mongo/collection/view/writable.rb', line 127

def delete_one
  remove(1)
end

#find_one_and_deleteBSON::Document?

Finds a single document in the database via findAndModify and deletes it, returning the original document.

Examples:

Find one document and delete it.

view.find_one_and_delete

Returns:

  • (BSON::Document, nil)

    The document, if found.

Since:

  • 2.0.0



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/mongo/collection/view/writable.rb', line 33

def find_one_and_delete
  cmd = { :findandmodify => collection.name, :query => filter, :remove => true }
  cmd[:fields] = projection if projection
  cmd[:sort] = sort if sort
  cmd[:maxTimeMS] = max_time_ms if max_time_ms
  wc = options[:write_concern] || (collection.write_concern &&
                                   collection.write_concern.options)
  cmd[:writeConcern] = wc if wc
  write_with_retry do
    database.command(cmd).first['value']
  end
end

#find_one_and_replace(replacement, opts = {}) ⇒ BSON::Document

Finds a single document and replaces it.

Examples:

Find a document and replace it, returning the original.

view.find_one_and_replace({ name: 'test' }, :return_document => :before)

Find a document and replace it, returning the new document.

view.find_one_and_replace({ name: 'test' }, :return_document => :after)

Parameters:

  • replacement (BSON::Document)

    The replacement.

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

    The options.

  • options (Hash)

    a customizable set of options

Options Hash (opts):

  • :return_document (Symbol)

    Either :before or :after.

  • :upsert (true, false)

    Whether to upsert if the document doesn’t exist.

  • :bypass_document_validation (true, false)

    Whether or not to skip document level validation.

Returns:

  • (BSON::Document)

    The document.

Since:

  • 2.0.0



67
68
69
# File 'lib/mongo/collection/view/writable.rb', line 67

def find_one_and_replace(replacement, opts = {})
  find_one_and_update(replacement, opts)
end

#find_one_and_update(document, opts = {}) ⇒ BSON::Document

Finds a single document and updates it.

Examples:

Find a document and update it, returning the original.

view.find_one_and_update({ "$set" => { name: 'test' }}, :return_document => :before)

Parameters:

  • document (BSON::Document)

    The updates.

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

    The options.

  • options (Hash)

    a customizable set of options

Options Hash (opts):

  • :return_document (Symbol)

    Either :before or :after.

  • :upsert (true, false)

    Whether to upsert if the document doesn’t exist.

  • :bypass_document_validation (true, false)

    Whether or not to skip document level validation.

Returns:

  • (BSON::Document)

    The document.

Since:

  • 2.0.0



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/mongo/collection/view/writable.rb', line 89

def find_one_and_update(document, opts = {})
  cmd = { :findandmodify => collection.name, :query => filter }
  cmd[:update] = document
  cmd[:fields] = projection if projection
  cmd[:sort] = sort if sort
  cmd[:new] = !!(opts[:return_document] && opts[:return_document] == :after)
  cmd[:upsert] = opts[:upsert] if opts[:upsert]
  cmd[:maxTimeMS] = max_time_ms if max_time_ms
  cmd[:bypassDocumentValidation] = !!opts[:bypass_document_validation]
  wc = options[:write_concern] || (collection.write_concern &&
                                   collection.write_concern.options)
  cmd[:writeConcern] = wc if wc
  write_with_retry do
    value = database.command(cmd).first['value']
    value unless value.nil? || value.empty?
  end
end

#replace_one(replacement, opts = {}) ⇒ Result

Replaces a single document in the database with the new document.

Examples:

Replace a single document.

collection_view.replace_one({ name: 'test' })

Parameters:

  • replacement (Hash)

    The replacement document.

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

    The options.

Options Hash (opts):

  • :upsert (true, false)

    Whether to upsert if the document doesn’t exist.

Returns:

  • (Result)

    The response from the database.

Since:

  • 2.0.0



145
146
147
# File 'lib/mongo/collection/view/writable.rb', line 145

def replace_one(replacement, opts = {})
  update(replacement, false, opts)
end

#update_many(spec, opts = {}) ⇒ Result

Update documents in the collection.

Examples:

Update multiple documents in the collection.

collection_view.update_many('$set' => { name: 'test' })

Parameters:

  • spec (Hash)

    The update statement.

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

    The options.

Options Hash (opts):

  • :upsert (true, false)

    Whether to upsert if the document doesn’t exist.

Returns:

  • (Result)

    The response from the database.

Since:

  • 2.0.0



163
164
165
# File 'lib/mongo/collection/view/writable.rb', line 163

def update_many(spec, opts = {})
  update(spec, true, opts)
end

#update_one(spec, opts = {}) ⇒ Result

Update a single document in the collection.

Examples:

Update a single document in the collection.

collection_view.update_one('$set' => { name: 'test' })

Parameters:

  • spec (Hash)

    The update statement.

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

    The options.

Options Hash (opts):

  • :upsert (true, false)

    Whether to upsert if the document doesn’t exist.

Returns:

  • (Result)

    The response from the database.

Since:

  • 2.0.0



181
182
183
# File 'lib/mongo/collection/view/writable.rb', line 181

def update_one(spec, opts = {})
  update(spec, false, opts)
end