Mongoose Aggregate.prototype.append()函数

Mongoose Aggregate.prototype.append()函数

Aggregate API.prototype.append()方法用于执行聚合任务。它允许我们通过添加新操作来更新或修改当前的管道。使用append()方法,我们可以将新的管道操作追加到当前的聚合管道中。

语法:

aggregate(...).append( <Object/ArrayObject> )

参数: 该方法接受一个参数,如下所讨论:

  • append: 该方法以对象或对象数组的形式接受操作作为参数。

返回值: 以数组形式返回聚合结果集。

设置Node.js应用:

步骤1: 使用以下命令创建一个Node.js应用:

npm init

步骤2: 创建NodeJS应用程序后,使用以下命令安装所需模块:

npm install mongoose

项目结构: 项目的结构如下所示:

Mongoose Aggregate.prototype.append()函数

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

Mongoose Aggregate.prototype.append()函数

示例1: 在这个示例中,我们使用mongoose建立了一个数据库连接,并在cricketerSchema上定义了模型,包含三个列或字段:“_id”、“name”和“nationality”。首先,我们在project聚合中定义了初始管道操作,然后打印出当前管道状态。最后,我们使用match聚合添加了新的管道操作,并在最后使用console.log显示了在添加操作之前和之后的管道状态以及聚合结果。

文件名:app.js

// Require mongoose module 
const mongoose = require("mongoose"); 
  
// Set Up the Database connection 
mongoose.connect( 
"mongodb://localhost:27017/geeksforgeeks", { 
    useNewUrlParser: true, 
    useUnifiedTopology: true, 
}); 
  
const cricketerSchema = new mongoose.Schema({ 
    _id: Number, 
    name: String, 
    nationality: String 
}); 
const Cricketer = mongoose.model( 
    'Cricketers', cricketerSchema); 
  
const aggregate = Cricketer.aggregate(); 
  
aggregate.project({ name: 1, nationality: 1 }) 
  
const beforeAppend = aggregate.pipeline(); 
  
console.log("Before append - ", beforeAppend); 
  
aggregate.append({ $match: { _id: 1 } }) 
.exec((error, success) => { 
    console.log("Result - ", success); 
    const afterAppend = aggregate.pipeline(); 
    console.log("After append - ", afterAppend); 
});

运行程序的步骤:

要运行应用程序,请从项目的根目录执行以下命令:

node app.js

输出:

Before append -  [ { 'project': {    name: 1,    nationality: 1 
} } ]
Result -  [ {    _id: 1,    name: 'Virat Kohli',    nationality: 'India' 
} ]
After append -  [
  { 'project': { name: 1, nationality: 1 } },
  { '$match': { _id: 1 } }
]

示例2: 在这个示例中,我们不是将一个对象传递给append() 方法,而是传递一个包含流水线操作的对象数组。

文件名:app.js

// Require mongoose module 
const mongoose = require("mongoose"); 
  
// Set Up the Database connection 
mongoose.connect( 
"mongodb://localhost:27017/geeksforgeeks", { 
    useNewUrlParser: true, 
    useUnifiedTopology: true, 
}); 
  
const cricketerSchema = new mongoose.Schema({ 
    _id: Number, 
    name: String, 
    nationality: String 
}); 
const Cricketer = mongoose.model( 
    'Cricketers', cricketerSchema); 
  
const aggregate = Cricketer.aggregate(); 
  
aggregate.project({ name: 1, nationality: 1 }) 
  
const beforeAppend = aggregate.pipeline(); 
  
console.log("Before append - ", beforeAppend); 
  
const appendPipeline = [{ $match: { _id: 5 } }] 
  
aggregate.append(appendPipeline).then((result) => { 
    console.log("Result - ", result); 
    const afterAppend = aggregate.pipeline(); 
    console.log("After append - ", afterAppend); 
});

运行程序的步骤: 要运行应用程序,请从项目的根目录执行以下命令:

node app.js

输出:

Before append -  [ { 'project': {    name: 1,    nationality: 1 
} } ]
Result -  [ {    _id: 5,    name: 'Aaron Finch',    nationality: 'Australia ' 
} ]
After append -  [
  { 'project': { name: 1, nationality: 1 } },
  { '$match': { _id: 5 } }
]

参考: https://mongoosejs.com/docs/api/aggregate.html#aggregate_Aggregate-append

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程