On this page
cursor.readConcern()
On this page
Definition
cursor.
readConcern
( level )-
New in version 3.2.
Specify a read concern for the
db.collection.find()
method.The
readConcern()
method has the following form:db.collection.find().readConcern(<level>)
The
readConcern()
method has the following parameter:Parameter Type Description level
string Read concern level.
Possible read concern levels are:
"local"
. This is the default read concern level."available"
. This is the default for reads against secondaries when Read Operations and Causally Consistent Sessions and “level” are unspecified. The query returns the instance’s most recent data."majority"
. Available for replica sets that use WiredTiger storage engine."linearizable"
. Available for read operations on theprimary
only.
For more formation on the read concern levels, see Read Concern Levels.
For
"local"
(default) or"majority"
read concern level, you can specify theafterClusterTime
option to have the read operation return data that meets the level requirement and the specified after cluster time requirement. For more information, see Read Operations and Causally Consistent Sessions.
Considerations
"majority"
Read Concern
To use read concern level of "majority"
, replica sets must use WiredTiger storage engine and election protocol version 1
.
Starting in MongoDB 3.6, support for read concern "majority"
is enabled by default. For MongoDB 3.6.1 - 3.6.x, you can disable read concern "majority"
. For more information, see Disable Read Concern Majority.
Read Your Own Writes
Starting in MongoDB 3.6, you can use causally consistent sessions to read your own writes, if the writes request acknowledgement.
Prior to MongoDB 3.6, you must have issued your write operation with { w: "majority" }
write concern and then use either "majority"
or "linearizable"
read concern for the read operations to ensure that a single thread can read its own writes.
Linearizable Read Concern Performance
When specifying linearizable read concern
, always use maxTimeMS()
in case a majority of data bearing members are unavailable.
db.restaurants.find( { _id: 5 } ).readConcern("linearizable").maxTimeMS(10000)
See also