Mongoose Query.prototype.read() API
Last Updated :
24 Apr, 2025
The Mongoose Query API.prototype.read() method of the Mongoose API is used on the Query objects. It allows us to tell the MongoDB from which node it should read the data. Using this method we can set one out of five different preferences to let MongoDB read the data. Let us understand the read() method using an example.
Preference:
- primary: It is the default reading node. Query operation will produce an error if the primary node will not be available.
- secondary: It is used to specify the secondary node preference. Query operation will produce an error if the secondary node will not be available.
- primaryPreferred: It is used to specify the primaryPreferred node preference. In this preference, data is read from the primary if it is available else data is read from the secondary node.
- secondaryPreferred: It is used to specify the secondaryPreferred node preference. In this preference, data is read from a secondary node if it is available else data is read from the primary node.
- nearest: Query operations read the data from all the nearest nodes. However, it will include both primary and secondary nodes.
Syntax:
query.read( <preference> );
Parameters: This method accepts two parameters as discussed below:
- preference: It is used to specify the read preference for MongoDB to read the data.
- tags: It is used to specify optional tags for the query operation in the form of an array.
Return Value: This method returns the query object.
Setting up Node.js application:
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 documents are present in the collection.
Example 1: In this example, we are illustrating the functionality of read() method. We have set the preferred node as the "primary" node.
Filename: app.js
JavaScript
// Require mongoose module
const mongoose = require("mongoose");
// Set Up the Database connection
const URI = "mongodb://localhost:27017/geeksforgeeks";
let connectionObject = mongoose.createConnection(URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
let Customer = connectionObject.model(
"Customer",
new mongoose.Schema({
name: String,
address: String,
orderNumber: Number,
})
);
let query = Customer.find();
query.read("primary")
query.then((result) => {
console.log("Result -", result);
}).catch((err) => {
console.log(err);
});
Step to run the program: To run the application execute the below command from the root directory of the project:
node app.js
Output:
Result - [
{
_id: new ObjectId("639ede899fdf57759087a655"),
name: 'Chintu',
address: 'Indore',
orderNumber: 0,
__v: 0
},
{
_id: new ObjectId("639ede899fdf57759087a653"),
name: 'Aditya',
address: 'Mumbai',
orderNumber: 20,
__v: 0
},
{
_id: new ObjectId("63bcfcc2876922405349b69d"),
name: 'Bhavesh',
address: 'Mhow',
orderNumber: 0,
__v: 0
}
]
Example 2: In this example, we are illustrating the functionality of the read() method. We have set the preferred node as a "secondary" node.
Filename: app.js
JavaScript
// Require mongoose module
const mongoose = require("mongoose");
// Set Up the Database connection
const URI = "mongodb://localhost:27017/geeksforgeeks";
let connectionObject = mongoose.createConnection(URI, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
let Customer = connectionObject.model(
"Customer",
new mongoose.Schema({
name: String,
address: String,
orderNumber: Number,
})
);
let query = Customer.find({ name: "Chintu" });
query.read("secondary");
query.exec((error, result) => {
if (error) {
console.log("Error -", error);
} else {
console.log("Result -", 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:
Result - [
{
_id: new ObjectId("639ede899fdf57759087a655"),
name: 'Chintu',
address: 'Indore',
orderNumber: 0,
__v: 0
}
]
Reference: https://mongoosejs.com/docs/api/query.html#query_Query-read
Similar Reads
Mongoose Query() API
The Mongoose API Query() method of the Mongoose API is used as a constructor to create a reference of Query. It allows us to create query objects and build query expressions. We do not need to create an object of the Query class in order to interact with the MongoDB collection. We can directly call
3 min read
Mongoose Query.prototype.$where() API
The Mongoose Query API.prototype.$where() method of the Mongoose API is used on the Query objects. It allows us to put the where condition in the form of JavaScript object or a function in order to pass the expression to the mongodb system. Let us understand the $where() method using an example. Syn
3 min read
Mongoose Query.prototype.and() API
The Mongoose Query API and() method is used to add additional filters to the current mongoose query instance. Syntax: Query.prototype.and(array) Parameters: It accepts the following parameters as mentioned above and described below: array: It is an array of conditions to concatenate to the current m
3 min read
Mongoose Query.prototype.catch() API
The Mongoose Query API.prototype.catch() method of the Mongoose API is used on the Query objects. It allows us to execute the query returned promise. Using this method we can handle the rejected promise error and can display it or use it for next processes. Rejected handler by the promise can be han
3 min read
Mongoose Query.prototype.clone() API
The Mongoose Query API clone() method is used to copy a mongoose query, and then can be executed anytime later. This method is useful if a query needs to be executed more than once, as a single query can't be executed twice. Syntax: Query.prototype.clone() Return type: It returns a Query object as a
3 min read
Mongoose Query.prototype.count() API
The Mongoose Query API count() method is used to count all the documents from a collection that matches the filter object provided in the arguments. Syntax: Query.prototype.count(filter, callback) Parameters: It accepts the following parameters as mentioned above and described below: filter: It is a
3 min read
Mongoose Query.prototype.countDocuments() API
The Mongoose Query API countDocuments() method is used to count all the documents from a collection that matches the filter object provided in the arguments. Syntax: Query.prototype.countDocuments(filter, options, callback) Parameters: It accepts the following parameters as mentioned above and descr
3 min read
Mongoose Query.prototype.deleteMany() API
The Mongoose Query API deleteMany() method is used to find and delete documents that are determined from the filter parameter, from a collection, using the MongoDB query system. Syntax: Query.prototype.deleteMany(filter, options, callback) Parameters: It accepts the following parameters as mentioned
3 min read
Mongoose Query.prototype.deleteOne() API
The Mongoose Query API deleteOne() method is used to find and delete a single document that is determined from the filter parameter, from a collection, using the MongoDB query system. Syntax: Query.prototype.deleteOne(conditions, options, callback) Parameters: It accepts the following parameters as
3 min read
Mongoose Query.prototype.distinct() API
The Mongoose Query API distinct() method is used to find the distinct values for a particular field in a collection and return the response as an array. Syntax: Query.prototype.distinct(field, filter, callback) Parameters: It accepted the following parameters as mentioned above and described below:
3 min read