微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MongoDB使用相同对象数组的另一个字段的值更新数组对象

如何解决MongoDB使用相同对象数组的另一个字段的值更新数组对象

我有一个类似以下的收藏集:

{
    _id: asilu92834,services: [
        {
            chargeAmount: 10,calculatedChargeAmount: 5,},{
            chargeAmount: 20,calculatedChargeAmount: 15,}
    ]
}

我想要做的是用它的对象的calculatedChargeAmount字段的值来更新chargeAmount字段。更新后,文档应如下所示:

{
    _id: asilu92834,services: [
        {
            chargeAmount: 5,{
            chargeAmount: 15,}
    ]
}

我知道在阅读每个文档后如何更新此文档,然后使用forEach一次更新一个文档。那不是我想要的 我知道updateMany()函数接受聚合管道,在这些管道中,您应该能够执行类似的操作

[
    { $set: { "value1": "$value2"}}
]

但是由于chargeAmount和calculatedChargeAmount嵌套在对象数组的内部,所以我试图这样做

db.collection.updateMany(filter,[
    {
      $set: {
        'services.$[].chargeAmount': '$services.$[].calculatedChargeAmount'
      }
    }
  ]);

我收到错误消息,指出Fieldpath字段名称不能以“ $”开头。不可能做我想达到的目标吗?如果可以,怎么办?

解决方法

尝试以下方法:

exclude 'META-INF/*.RSA','META-INF/*.SF','META-INF/*.DSA'

请记住,这里的id是mongoDB中阵列服务的_id。它必须具有一个自动创建的_id。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。