我有以下文件:
{
"results" : [
{
"name" : "foo",
"score" : 10
},
{
"name" : "bar"
}
]
}
我想将score
字段乘以10
,只有它存在。
仅使用点符号:
{
$mul: {
'results.score': NumberInt(10)
}
}
返回错误:
Cannot create field 'score' in element {results: [ { name: "foo", score: 10 }, { name: "bar" } ]}
我尝试过使用新的阵列过滤器:
{
$mul: {
'results.$[result].score': NumberInt(10)
}
}, {
arrayFilters: [{
'result.grade': {
$exists: true
}
}]
}
这也给我一个错误:
No array filter found for identifier 'result' in path 'results.$[result].score'
我知道我可以在所有文件中设置一个得分字段并将其设置为零,但这不是一个解决方案,因为缺少得分意味着还没有得分,而是有一个分数,它是0
。