示例代码
假设集合 stats
有如下记录:
{
"_id": 1,
"base": 10,
"sales": [ 1, 6, 2, 2, 5 ]
}
{
"_id": 2,
"base": 1,
"sales": 100
}
计算总销量,如果 sales
是数字,则求 sales * base
,如果 sales
是数组,则求数组元素之和与 base
的乘积。
const $ = db.command.aggregate
db.collection('stats').aggregate()
.project({
sum: $.cond({
if: $.isArray('$sales'),
then: $.multiply([$.sum(['$sales']), '$base']),
else: $.multiply(['$sales', '$base']),
})
})
.end()
返回结果如下:
{ "_id": 1, "index": 160 }
{ "_id": 2, "index": 100 }
结果中index字段名应该为sum,正确为:
{ "_id": 1, "sum": 160 }
{ "_id": 2, "sum": 100 }