MongoDB -更新数组中刚创建的元素(聚合)

7gcisfzg  于 2023-01-01  发布在  Go
关注(0)|答案(1)|浏览(122)

我有这些模式:

  1. Item = {
  2. name: String,
  3. price: Number;
  4. }
  5. Sales = {
  6. items: [Item],
  7. totalSaleValue: Number,
  8. }
  9. Clients = {
  10. clientName: String,
  11. sales: [Sales]
  12. }

每次插入或更新销售时,都应根据items字段中每个项目的价格字段计算(如果是更新,则重新计算)其totalSaleValue字段。
因此,当发布一个新的销售,我开始这样:

  1. db.collection.findOneAndUpate(
  2. { _id: <the _id for the client> },
  3. [
  4. { $set: { sales: { $concatArray: [ '$sales', [ /*a Sales object*/ ] ] } } }
  5. ]
  6. )

这将有效地将新的销售插入到sales数组中,但我不知道如何访问刚刚创建的sales来设置其totalSaleValue字段,我在考虑以下内容:
1.访问sales字段。
1.访问数组中的最后一个元素。
1.将totalSaleValue字段设置为该销售中所有商品的价格总和($)。
我如何才能完成这一点,或者有更好的方法吗?我需要做的是一个查询

tpxzln5u

tpxzln5u1#

使用第二个$set阶段与$sum相加价格。

相关问题