使用$set和$sum mongodb更新数据

3lxsmp7m  于 2023-02-11  发布在  Go
关注(0)|答案(1)|浏览(101)

我尝试更新并汇总列值。

await single_sku_db.collection("test").updateOne(
      { _id: ObjectId(id) },
      {
        $push: {
          report: {
            $each: [
              {
                name: name,
                views,
              },
            ],
            $position: 0,
          },
        },
        $set: {
          report_status: "Completed",
          total_views: { $sum: "$report.views"},
        },
      }

我不能总结报告。像这样的观点,将得到这个错误。
美元($)前缀字段“”对于存储无效。
有没有办法不使用聚合来执行此操作?

nimxete2

nimxete21#

一种选择是将$set替换为$inc

await single_sku_db.collection("test").updateOne(
      { _id: ObjectId(id) },
      {
        $push: {
          report: {
            $each: [
              {
                name: name,
                views,
              },
            ],
            $position: 0,
          },
        },
        $set: {report_status: "Completed"},
        $inc: {total_views: views},
      })

了解它在playground example上的工作原理

相关问题