Mongoose Query.prototype.w()方法
Mongoose Query API.prototype.w() 方法 是在查询对象上使用的Mongoose API的一部分。它允许我们设置指定数量的MongoDB服务器,在成功执行写入事件之前必须确认写入操作。方法可以将参数设置为“1”,表示由一个服务器确认,将参数设置为“majority”,表示由多个服务器的副本集确认。让我们使用一个示例来理解 w()方法 。
这个选项或w()方法可以在以下方法上使用:
- deleteOne()
- deleteMany()
- findOneAndDelete()
- findOneAndReplace()
- findOneAndUpdate()
- remove()
- update()
- updateOne()
- updateMany()
语法:
query.deleteOne( ... ).w( val );
参数: 此方法接受一个参数,如下所述:
- val: 用于指定数字或字符串,1表示从1个MongoDB服务器获得确认,”majority”表示从大多数副本集获得确认。
返回值: 此方法返回查询对象。
设置Node.js应用程序:
步骤1: 使用以下命令创建一个Node.js应用程序:
npm init
步骤2: 创建NodeJS应用之后,使用以下命令安装所需模块:
npm install mongoose
项目结构: 项目的结构将如下所示:
数据库结构: 数据库结构将会是这样的,集合中存在以下文档。
示例1: 在这个示例中,我们通过在 updateOne() 方法上访问 w() 方法来解释其功能。
文件名: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 Customer = connectionObject.model(
'Customer', new mongoose.Schema({
name: String,
address: String,
orderNumber: Number,
}));
(async () => {
const query = Customer.updateOne(
{ name: "Chintu" }, { orderNumber: 10 }
);
query.w(1);
query.exec((error, result) => {
if (error) {
console.log('Error -', error);
} else {
console.log('Result -', result);
}
})
})();
运行程序的步骤: 从项目的根目录执行以下命令来运行应用程序:
node app.js
输出:
Result - {
acknowledged: true,
modifiedCount: 1,
upsertedId: null,
upsertedCount: 0,
matchedCount: 1
}
使用Robo3T GUI工具的数据库的GUI表示:
示例2: 在这个示例中,我们通过在 deleteOne() 方法上调用 w() 方法来说明其功能。最后,我们从集合中删除一个文档,并寻求大多数副本集的确认。
文件名: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 Customer = connectionObject.model(
"Customer",
new mongoose.Schema({
name: String,
address: String,
orderNumber: Number,
})
);
const query = Customer.deleteOne({ name: "Bhavesh" });
query.w("majority");
query.then(result => {
console.log(result);
}).catch(error => {
console.log(error);
})
运行程序的步骤: 从项目的根目录中执行以下命令来运行应用程序:
node app.js
输出:
{ acknowledged: true, deletedCount: 1 }
使用Robo3T GUI工具的数据库的GUI表示:
参考资料: https://mongoosejs.com/docs/api/query.html#query_Query-w