Mongoose Document Model.prototype.$where()函数
Mongoose Document API的Model.prototype.$where()
方法是在Document模型上使用的。它允许将where条件放在MongoDB查询中。使用这个方法,我们可以形成具有JavaScript表达式的MongoDB查询。我们也可以直接在MongoDB模型上使用这个方法。让我们通过一个例子来理解$where()
方法。
语法:
Model.$where(<argument>);
参数: 该方法接受一个单一的参数,如下所讨论:
- argument: 它用于使用JavaScript表达式或字符串或函数来指定条件。
返回值: 该方法返回一个查询对象,我们可以在该对象上调用回调函数。
设置Node.js应用:
步骤1: 使用以下命令创建一个Node.js应用:
npm init
步骤2: 创建NodeJS应用程序之后,使用以下命令安装所需的模块:
npm install mongoose
项目结构: 项目的结构将如下所示:
数据库结构: 数据库结构将如下所示,集合中包含以下文档。
示例1: 在这个示例中,我们展示了 $where() 方法的功能。我们直接在 Customer 模型上访问 $where() 方法,并获取name字段值为 Aditya 的文档。
文件名: app.js
// 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,
})
);
Customer.$where("this.name === 'Aditya'").
then(res => {
console.log(res);
}).catch(err => {
console.log(err);
});
运行程序的步骤: 从项目的根目录中执行以下命令以运行应用程序:
node app.js
输出:
[
{
_id: new ObjectId("639ede899fdf57759087a653"),
name: 'Aditya',
address: 'Mumbai',
orderNumber: 20,
__v: 0
}
]
示例2: 在此示例中,我们展示了 $where() 方法的功能。我们正在访问结果集上的 $where() 表单,并提取那些 orderNumber 字段值为 9 的文档。
文件名: app.js
// 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,
})
);
Customer.find().$where(("this.orderNumber === 9")).
exec((error, result) => {
if (error) {
console.log(error);
} else {
console.log(result);
}
});
运行程序的步骤: 要运行该应用程序,请在项目的根目录下执行以下命令:
node app.js
输出:
[
{
_id: new ObjectId("639ede899fdf57759087a655"),
name: 'Chintu',
address: 'IND',
orderNumber: 9,
__v: 0
},
{
_id: new ObjectId("63c13b76876922405349f708"),
name: 'Mivaan',
address: 'IND',
orderNumber: 9,
__v: 0
}
]
参考: https://mongoosejs.com/docs/api/model.html#model_Model-$where