Mongoose Query.prototype.readConcern()方法
在Mongoose API中, Query API.prototype.readConcern() 方法用于处理Query对象。它允许我们为特定的查询对象设置和配置读取关注的查询选项。使用该方法,我们可以控制不同副本集中数据的一致性和隔离属性。让我们通过一个示例来了解 readConcern()方法 。
语法:
query.readConcern( level );
参数: 此方法接受以下单个参数:
- level: 用于指定读取关注级别。
返回值: 此方法不返回任何值。
读取关注级别:
- local: 用于指定数据未写入大部分副本集的保证。
- available: 用于指定数据未写入大部分副本集的保证。
- majority: 用于指定数据已被大部分副本集确认。
- linearizable: 用于指定在读操作开始之前完成的所有成功的大多数确认写入。
- snapshot: 仅适用于多文档事务中的操作。
设置Node.js Mongoose模块:
步骤1: 使用以下命令创建一个Node.js应用程序:
npm init
步骤2: 创建NodeJS应用程序后,使用以下命令安装所需的模块:
npm install mongoose
项目结构: 项目结构将如下所示:
数据库结构: 数据库结构将如下所示,以下数据库存在于MongoDB中。
示例1: 下面的示例演示了Mongoose连接readConcern()方法的基本功能。在这个示例中,我们正在配置本地级别的读关注。
文件名:app.js
// Require mongoose module
const mongoose = require("mongoose");
// Set Up the Database connection
const URI = "mongodb://localhost:27017/geeksforgeeks"
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);
}
})
运行程序的步骤: 在项目的根目录下执行以下命令来运行应用程序:
node app.js
输出:
[
{
_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
}
]
示例2: 下面的示例演示了Mongoose Connection的基本功能 readConcern() 方法。在这个示例中,我们将配置读取关注度为 majority 级别。
文件名:app.js
// Require mongoose module
const mongoose = require("mongoose");
// Set Up the Database connection
const URI = "mongodb://localhost:27017/geeksforgeeks"
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)
})
运行程序的步骤: 在项目的根目录下,执行以下命令来运行应用程序:
node app.js
输出:
[
{
_id: new ObjectId("63a4a9a207370cdcd1961b2c"),
name: 'Student2',
age: 18,
rollNumber: 176,
__v: 0
}
]
参考: https://mongoosejs.com/docs/api/query.html#query_Query-readConcern