Mongoose Model.aggregate()函数

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

项目结构:

项目的结构将如下所示:

Mongoose Model.aggregate()函数

数据库结构:

数据库结构将如下所示,集合中包含以下文档。

Mongoose Model.aggregate()函数

示例1:

在这个示例中,我们演示了aggregate()方法的功能。使用聚合管道,我们选择使nameorderNumber在结果集中可见。

文件名: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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程