Допустим, у меня есть этот документ:
{
_id: 0,
array: [{a: 120}, {a: 2452}]
}
И я хочу получить:
{
_id: 0,
array: [{a: 120}, {a: 2452}],
a1x2: 240 // array[0].a * 2
}
В настоящее время самый простой способ сделать это в агрегации,is:
db.collection.aggregate([{
$match: {}
}, {
$set: {aTmp: {$arrayElemAt: ["$array", 0]}}
}, {
$project: {
array: 1,
a1x2: {$multiply: ["$aTmp.a", 2]},
aTmp: 0
}
}
Есть ли способ сделать это без промежуточного шага установки aTmp
? Я не знаю, как получить значение вложенного документа для ключа, когда оно имеет форму {$arrayElemAt: ["$array", 0]}
.
Я также пытался использовать $array.0.a
и $array[0].a
, но безрезультатно.