Method: Mongo::Collection#find_one_and_update
- Defined in:
- lib/mongo/collection.rb
#find_one_and_update(filter, update, options = {}) ⇒ BSON::Document
Finds a single document via findAndModify and updates it, returning the original doc unless otherwise specified.
Examples:
Find a document and update it, returning the original.
Find a document and update it, returning the original.
collection.find_one_and_update({ name: 'test' }, { "$set" => { name: 'test1' }})
Find a document and update it, returning the updated document.
Find a document and update it, returning the updated document.
collection.find_one_and_update({ name: 'test' }, { "$set" => { name: 'test1' }}, :return_document => :after)
Parameters:
-
filter
(Hash)
—
The filter to use.
-
update
(Hash | Array<Hash>)
—
The update document or pipeline.
-
options
(Hash)
(defaults to: {})
—
The options.
Options Hash (options):
-
:max_time_ms
(Integer)
—
The maximum amount of time to allow the command to run in milliseconds.
-
:projection
(Hash)
—
The fields to include or exclude in the returned doc.
-
:sort
(Hash)
—
The key and direction pairs by which the result set will be sorted.
-
: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.
-
:write_concern
(Hash)
—
The write concern options. Defaults to the collection’s write concern.
-
:collation
(Hash)
—
The collation to use.
-
:array_filters
(Array)
—
A set of filters specifying to which array elements an update should apply.
-
:session
(Session)
—
The session to use.
-
:hint
(Hash | String)
—
The index to use for this operation. May be specified as a Hash (e.g. { _id: 1 }) or a String (e.g. “id”).
-
:let
(Hash)
—
Mapping of variables to use in the command. See the server documentation for details.
-
:timeout_ms
(Integer)
—
The operation timeout in milliseconds. Must be a non-negative integer. An explicit value of 0 means infinite. The default value is unset which means the value is inherited from the collection or the database or the client.
Returns:
-
(BSON::Document)
—
The document.
Since:
-
2.1.0
1221 1222 1223 |
# File 'lib/mongo/collection.rb', line 1221 def find_one_and_update(filter, update, options = {}) find(filter, options).find_one_and_update(update, options) end |