cursor.readConcern()
Definition
mongo
Shell Method
This page documents the mongo
shell method, and doesnot refer to the MongoDB Node.js driver (or any other driver)method. For corresponding MongoDB driver API, refer to your specificMongoDB driver documentation instead.
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 followingparameter:
ParameterTypeDescriptionlevel
stringRead concern level.
Possible read concern levels are:
"local"
. This is the default read concern level forread operations against primary and read operations againstsecondaries when associated with causally consistent sessions."available"
. This is the default for reads againstsecondaries when when not associated with causally consistentsessions. The query returns the instance’s mostrecent data."majority"
. Available for replica sets that useWiredTiger storage engine."linearizable"
. Available for read operations on theprimary
only.For more formation on the read concern levels, seeRead Concern Levels.
Considerations
"majority" Read Concern
To use read concern level of "majority"
, replicasets must use WiredTiger storage engine.
You can disable read concern "majority"
for a deploymentwith a three-member primary-secondary-arbiter (PSA) architecture;however, this has implications for change streams (in MongoDB 4.0 andearlier only) and transactions on sharded clusters. 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 requestacknowledgement.
Prior to MongoDB 3.6, you must have issued your write operation with{ w: "majority" }
write concern and thenuse either "majority"
or "linearizable"
read concern for the read operations to ensure that a single thread canread its own writes.
Linearizable Read Concern Performance
When specifying linearizable read concern
, always use maxTimeMS()
in casea majority of data bearing members are unavailable.
- db.restaurants.find( { _id: 5 } ).readConcern("linearizable").maxTimeMS(10000)
See also