Mongoose Model.aggregate()函数
Mongoose模型的API Model.aggregate() 方法 用于文档模型。它允许在模型集合上执行聚合任务。使用这个方法,我们可以在mongoose模型上执行聚合操作。我们可以直接在模型上调用这个方法。让我们通过一个示例来了解 aggregate() 方法。
语法:
Model.aggregate( pipeline, options, callback );
参数: 此方法接受三个参数,如下所述:
- pipeline: 用于指定聚合管道操作。
- options: 用于配置各种属性。
- callback: 用于配置用于处理返回的promise的回调函数。
返回值: 此方法返回聚合对象,可以调用回调函数,或者可以使用then或catch块处理。
设置Node.js应用程序:
步骤1: 使用以下命令创建一个Node.js应用程序:
npm init
步骤2: 在创建好NodeJS应用程序后,使用以下命令安装所需的模块:
npm install mongoose
项目结构:
项目的结构将如下所示:
数据库结构:
数据库结构将如下所示,集合中包含以下文档。
示例1:
在这个示例中,我们演示了aggregate()
方法的功能。使用聚合管道,我们选择使name
和orderNumber
在结果集中可见。
文件名: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,
})
);
Customer.aggregate().project(
{ name: 1, _id: 0, orderNumber: 1 }
).exec((error, result) => {
if (error) {
console.log(error);
} else {
console.log(result);
}
})
运行程序的步骤: 要运行该应用程序,请从项目的根目录执行以下命令:
node app.js
输出:
[
{ name: 'Chintu', orderNumber: 9 },
{ name: 'Aditya', orderNumber: 20 },
{ name: 'Bhavesh', orderNumber: 65 },
{ name: 'Mivaan', orderNumber: 9 },
{ name: 'Takshwi', orderNumber: 15 },
{ name: 'Kinjal', orderNumber: 35 }
]
示例2: 在这个示例中,我们演示了aggregate()方法的功能。我们使用聚合管道对结果集按照orderNumber字段进行升序排序。
文件名: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,
})
);
Customer.aggregate([
{ sort: { orderNumber: 1 } },
{project: { name: 1, _id: 0, orderNumber: 1 } }
]).then(result => {
console.log(result);
}).catch(err => {
console.log(err);
})
运行程序的步骤:
要运行应用程序,请从项目的根目录执行以下命令:
node app.js
输出:
[
{ name: 'Chintu', orderNumber: 9 },
{ name: 'Mivaan', orderNumber: 9 },
{ name: 'Takshwi', orderNumber: 15 },
{ name: 'Aditya', orderNumber: 20 },
{ name: 'Kinjal', orderNumber: 35 },
{ name: 'Bhavesh', orderNumber: 65 }
]
参考资料: https://mongoosejs.com/docs/api/model.html#model_Model-aggregate