1

我有以下文件:

{
    "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

  1. 这可以做到吗?
  2. 这可以在 3.6 版之前完成吗?
4

0 回答 0