假设集合version有如下数据
{
_id: 1,
option: [
{
id: 1,
total: 10
}, {
id: 2,
total: 20
}
]
}
我想获取version集合中_id等于1的数据,同时将此条数据的option数组中的每条记录新增一个字段num,
num的值为 option[i] 的total 除以 option所有total之和 。
我现在写了一半报错了,请问该怎么实现?
db.collection('version').aggregate().match({
_id: 1
}).addFields({
totalScore: $.sum('$option.total'),
}).addFields({
'option.num': $.divide(['$option.total', '$totalScore']) //这里报错了
})
.end()
难道只能用for循环实现了吗...
db.collection('version').aggregate() .match({ _id:1 }) .addFields({ totalScore: $.sum('$option.total') }).unwind('$option').addFields({ 'option.num': $.divide(['$option.total', '$totalScore']) }).group({ _id: '$_id', option: $.push('$option') }).end()
若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人