$ mul嵌套文档字段可能不存在

时间:2018-01-18 10:51:15

标签: mongodb bson mongodb-update

我有以下文件:

{
    "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之前完成吗?

0 个答案:

没有答案