我有一个类似以下的收藏集:
{
_id: asilu92834,
services: [
{
chargeAmount: 10,
calculatedChargeAmount: 5,
},
{
chargeAmount: 20,
calculatedChargeAmount: 15,
}
]
}
我想要做的是用它的对象的calculatedChargeAmount字段的值来更新chargeAmount字段。更新后,文档应如下所示:
{
_id: asilu92834,
services: [
{
chargeAmount: 5,
calculatedChargeAmount: 5,
},
{
chargeAmount: 15,
calculatedChargeAmount: 15,
}
]
}
我知道在阅读每个文档后如何更新此文档,然后使用forEach一次更新一个文档。那不是我想要的 我知道updateMany()函数接受聚合管道,在这些管道中,您应该能够执行类似的操作
[
{ $set: { "value1": "$value2"}}
]
但是由于chargeAmount和calculatedChargeAmount嵌套在对象数组的内部,所以我试图这样做
db.collection.updateMany(filter, [
{
$set: {
'services.$[].chargeAmount': '$services.$[].calculatedChargeAmount'
}
}
]);
我收到错误消息,指出FieldPath字段名称不能以“ $”开头。不可能做我想达到的目标吗?如果可以,怎么办?
答案 0 :(得分:0)
尝试以下方法:
exclude 'META-INF/*.RSA', 'META-INF/*.SF','META-INF/*.DSA'
请记住,这里的id是mongoDB中阵列服务的_id。它必须具有一个自动创建的_id。