Open In App

Mongoose Query.prototype.readConcern() API

Last Updated : 11 Jan, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

The Mongoose Query API.prototype.readConcern() method of the Mongoose API is used on the Query objects. It allows us to set and configure the read concern query options for a particular query object. Using this method we can control the consistency and isolation properties of the data from different replica sets. Let us understand the readConcern() method using an example.

Syntax:

query.readConcern( level );

Parameters: This method accepts a single parameter as described below:

  • level: It is used to specify the level of read concern.

Return Value: This method does not return any value.

Read Concern Level:

  • local: This is used to specify that there is no guarantee that the data has been written to most of the replica set.
  • available: This is used to specify that there is no guarantee that the data has been written to most of the replica set.
  • majority: This is used to specify that the data has been acknowledged by most of the replica sets.
  • linearizable: This is used to specify that reflects all successful majority-acknowledged writes that completed prior to the start of the read operation. 
  • snapshot: Only available for operations within multi-document transactions. 

Setting up Node.js Mongoose Module:

Step 1: Create a Node.js application using the following command:

npm init

Step 2: After creating the NodeJS application, Install the required module using the following command:

npm install mongoose

Project Structure: The project structure will look like this: 

 

Database Structure: The database structure will look like this, the following database present in the MongoDB.

 

Example 1: The below example illustrates the basic functionality of the Mongoose Connection readConcern() method. In this example, we are configuring read concern for local level.

Filename: app.js

Javascript




// Require mongoose module
const mongoose = require("mongoose");
  
// Set Up the Database connection
  
const connectionObject = mongoose.createConnection(URI, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
});
  
const studentSchema = new mongoose.Schema({
    name: { type: String },
    age: { type: Number },
    rollNumber: { type: Number },
});
  
const Student = connectionObject.model('Student', studentSchema);
  
const query = Student.find()
query.readConcern('local');
query.exec((error, result) => {
    if (error) {
        console.log(error);
    } else {
        console.log(result);
    }
})


Step to run the program: To run the application execute the below command from the root directory of the project:

node app.js

Output:

[
  {
    _id: new ObjectId("63a40a1065e8951038a391b1"),
    name: 'Student1',
    age: 30,
    rollNumber: 9,
    __v: 0
  },
  {
    _id: new ObjectId("63a4a98407370cdcd1961b1a"),
    name: 'Student3',
    age: 33,
    rollNumber: 178,
    __v: 0
  },
  {
    _id: new ObjectId("63a4a9a207370cdcd1961b2c"),
    name: 'Student2',
    age: 18,
    rollNumber: 176,
    __v: 0
  }
]

Example 2: The below example illustrates the basic functionality of the Mongoose Connection readConcern() method. In this example, we are configuring read concern for majority level.

Filename: app.js

Javascript




// Require mongoose module
const mongoose = require("mongoose");
  
// Set Up the Database connection
  
const connectionObject = mongoose.createConnection(URI, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
});
  
const studentSchema = new mongoose.Schema({
    name: { type: String },
    age: { type: Number },
    rollNumber: { type: Number },
});
  
const Student = connectionObject.model('Student', studentSchema);
  
const query = Student.find({ name: 'Student2' })
query.readConcern('majority');
query.then(result => {
    console.log(result);
}).catch(error => {
    console.log(error)
})


Step to run the program: To run the application execute the below command from the root directory of the project:

node app.js

Output:

[
  {
    _id: new ObjectId("63a4a9a207370cdcd1961b2c"),
    name: 'Student2',
    age: 18,
    rollNumber: 176,
    __v: 0
  }
]

Reference: https://mongoosejs.com/docs/api/query.html#query_Query-readConcern



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads