繁体   English   中英

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

[英]MongoDB - Update a just created element in an array (aggregation)

我有这些模式:

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数组中,但我不知道如何访问刚刚创建的销售以设置其totalSaleValue字段,我正在考虑这些方面的事情:

  1. 进入sales领域。
  2. 访问该数组中的最后一个元素。
  3. totalSaleValue字段设置为该次销售中所有商品价格的总和。

我怎样才能做到这一点,或者有更好的方法吗? 我需要做的是一个查询

使用带有$sum的第二个$set阶段来添加价格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM