我的收藏集Item
包含字段_id
,price
和project
以及包含字段Project
的收藏集_id
和name
。
这些商品的价格不同,因此我希望按price
对商品进行分组,并计算每组中的商品数量,并将值保存为quantity
。
然后我想计算quantity
和price
以获得总金额。但我想计算一些费用。费用应计算为totalPrice * (1 + 10/100) + 5 * quantity
。
所以我尝试使用$project
计算每笔费用并且有效,但我无法使用总价格(包括费用)创建最终计算字段。我想我无法在同一$project
中使用计算字段?
我使用了以下代码,但totalPriceWithFees
变为0:
Item.aggregate([
{
$group: {
_id: {
project: '$project',
price: '$price'
},
quantity: { $sum: 1 }
}
},
{
$project: {
quantity: 1,
totalPriceWithoutFees: {
$multiply: ['$_id.price', '$quantity']
},
feesPercentage: {
$multiply: ['$_id.price', 0.1]
},
feesAbsolute: {
$multiply: ['$quantity', 5]
},
fees: {
$sum: ['feesPercentage', 'feesAbsolute']
},
totalPriceWithFees: {
$sum: ['$totalPriceWithoutFees', '$fees']
},
}
}
{
$lookup: {
from: 'Project',
localField: '_id.project',
foreignField: '_id',
as: 'project'
}
}
])
另外,我想填充项目。我只保存了项目ID,所以我需要填充以获取项目名称。我不确定在Mongoose中是否可以使用正常的populate()
,所以我尝试使用$lookup
,但它也不起作用。字段project
变为空。