我正在尝试运行一个MongoDB查询,用另一个嵌套字段的值更新一个字段的值。
{
"name": "name",
"address": "address",
"times": 10,
"snapshots": [
{
"dayTotal": 2,
"dayHit": 2,
"dayIndex": 2
},
{
"dayTotal": 3,
"dayHit": 3,
"dayIndex": 3
}
]
}
我是这样努力的:
db.netGraphMetadataDTO.updateMany(
{ },
[{ $set: { times: "$snapshots.$[elem].dayTotal" } }],
{
arrayFilters: [{"elem.dayIndex":{"$eq": 2}}],
upsert: false,
multi: true
}
);
但出现错误:
不能为管道样式更新指定arrayFilters
1条答案
按热度按时间mwngjboj1#
不能同时将
arrayFilters
与聚合管道一起用于更新查询。相反,您需要做的是:
1.从结果 2 中获取
dayTotal
字段。1.从结果中取出第一个匹配的文档 3。
1.从
snapshots
数组中筛选文档。Demo @ Mongo Playground