我有这些模式:
Item = {
name: String,
price: Number;
}
Sales = {
items: [Item],
totalSaleValue: Number,
}
Clients = {
clientName: String,
sales: [Sales]
}
每次插入或更新销售时,都应根据items
字段中每个项目的价格字段计算(如果是更新,则重新计算)其totalSaleValue
字段。
因此,当发布一个新的销售,我开始这样:
db.collection.findOneAndUpate(
{ _id: <the _id for the client> },
[
{ $set: { sales: { $concatArray: [ '$sales', [ /*a Sales object*/ ] ] } } }
]
)
这将有效地将新的销售插入到sales
数组中,但我不知道如何访问刚刚创建的sales来设置其totalSaleValue
字段,我在考虑以下内容:
1.访问sales
字段。
1.访问数组中的最后一个元素。
1.将totalSaleValue
字段设置为该销售中所有商品的价格总和($)。
我如何才能完成这一点,或者有更好的方法吗?我需要做的是一个查询
1条答案
按热度按时间tpxzln5u1#
使用第二个
$set
阶段与$sum
相加价格。