$mul вложенное поле документа, где может не быть
У меня есть следующий документ:
{
"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?