我有以下文件:
{
"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
。
- 这可以做到吗?
- 这可以在 3.6 版之前完成吗?