Mongoose Aggregate.prototype.addFields()函数
Mongoose API的Aggregate.prototype.addFields()方法用于执行聚合任务。它允许我们向输出文档中添加新的字段。使用addFields()方法,我们可以将自定义字段添加到结果集中,同时还可以在输出文档中查看它们。
语法:
aggregate(.....).addFields( Object )
参数: 此方法接受一个参数,具体描述如下:
- Object: 用于指定要包含在结果集中的新字段的对象。
返回值: 此方法以数组形式返回结果集。
设置Node.js Mongoose模块:
步骤1: 使用以下命令创建一个Node.js应用程序:
npm init
步骤2: 在创建了NodeJS应用程序之后,使用下列命令安装所需模块:
npm install mongoose
项目结构: 项目结构将如下所示:
数据库结构: 数据库结构将如下所示,集合中存在以下文档。
示例1:
在这个示例中,我们使用mongoose建立了一个数据库连接,并在userSchema上定义了一个模型,有五个列或字段”_id”、”name”、”fixedDeposit”、”interest”和”tenure”。最后,我们调用 addFields() 方法,并在输出文档中添加一个新字段,以及现有的字段。新字段的名称是returnOnInvestment,该字段通过乘以本金、利率和期限来计算投资的回报金额。
文件名: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 userSchema = new mongoose.Schema({
name: String,
fixedDeposit: Number,
interest: Number,
tenure: Number
});
const User = mongoose.model('User', userSchema);
User.aggregate()
.project({ name: 1, fixedDeposit: 1, interest: 1, tenure: 1 })
.addFields({
returnOnInvestment: {
multiply: ["fixedDeposit", "interest", "tenure"]
}
}).then(result => {
console.log(result)
})
运行程序的步骤: 要运行该应用程序,请在项目的根目录下执行以下命令:
node app.js
输出:
[
{
_id: new ObjectId("638f0262cc8a382bcf3d93df"),
name: 'Bhavesh',
fixedDeposit: 8000,
interest: 0.03,
tenure: 60,
investmentReturn: 14400
},
{
_id: new ObjectId("638f0262cc8a382bcf3d93de"),
name: 'Aditya',
fixedDeposit: 50000,
interest: 0.04,
tenure: 24,
investmentReturn: 48000
}
]
示例2: 在这个示例中,我们使用mongoose建立了与数据库的连接,并在userSchema上定义了模型,其中有五个列或字段”_id”、”name”、”fixedDeposit”、”interest”和”tenure”。最后,我们调用 addFields() 方法,在现有字段之后添加了一个新的输出字段。新字段的名称是 oneMonthReturn 通过乘以本金和利率,这个字段计算了一个月的投资回报金额。
文件名: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 userSchema = new mongoose.Schema({
name: String,
fixedDeposit: Number,
interest: Number,
tenure: Number
});
const User = mongoose.model('User', userSchema);
User.aggregate([{
project:
{ name: 1, fixedDeposit: 1, interest: 1, tenure: 1 }
}])
.addFields({
oneMonthReturn:
{multiply: ["fixedDeposit", "interest", 1] }
}).exec((error, success) => {
if (error)
console.log(error);
else
console.log(success);
})
运行程序的步骤: 要运行该应用程序,请从项目的根目录执行以下命令:
node app.js
输出:
[
{
_id: new ObjectId("638f0262cc8a382bcf3d93df"),
name: 'Bhavesh',
fixedDeposit: 8000,
interest: 0.03,
tenure: 60,
oneMonthReturn: 240
},
{
_id: new ObjectId("638f0262cc8a382bcf3d93de"),
name: 'Aditya',
fixedDeposit: 50000,
interest: 0.04,
tenure: 24,
oneMonthReturn: 2000
}
]
参考: https://mongoosejs.com/docs/api/aggregate.html#aggregate_Aggregate-addFields