// 1. 数据库数据
// {
// "avatar": { // 集合(表名)
// "data": [ // 数据
// {
// "_id": "1",
// "alias": "john",
// "region": "asia",
// "scores": [40, 20, 80],
// "coins": 100
// },
// {
// "_id": "2",
// "alias": "arthur",
// "region": "europe",
// "scores": [60, 90],
// "coins": 20
// },
// {
// "_id": "3",
// "alias": "george",
// "region": "europe",
// "scores": [50, 70, 90],
// "coins": 50
// },
// {
// "_id": "4",
// "alias": "john",
// "region": "asia",
// "scores": [30, 60, 100, 90],
// "coins": 40
// },
// {
// "_id": "5",
// "alias": "george",
// "region": "europe",
// "scores": [20],
// "coins": 60
// },
// {
// "_id": "6",
// "alias": "john",
// "region": "asia",
// "scores": [40, 80, 70],
// "coins": 120
// }
// ]
// }
// }
// 02. 聚合操作 group
// 聚合阶段,将输入记录按给定表达式分组,输出时每个记录代表一个分组,每个记录的 _id 是区分不同组的 key。
// 输出记录中也可以包括累计值,将输出字段设为累计值即会从该分组中计算累计值。
'use strict';
const db = uniCloud.database();
const $ = db.command.aggregate;
exports.main = async(event, context) => {
let res = await db.collection('avatar').aggregate()
// 按字段值分组
.group({
// 根据_id分组
_id: '$alias',
// 统计 alias值出现的次数,1表示*1输出,如果是2,表示 次数*2 输出
num: $.sum(1)
})
.end();
return res;
};
// 聚合之后的返回值
// {
// "affectedDocs": 3,
// "data": [{
// "_id": "george",
// "num": 2
// },
// {
// "_id": "arthur",
// "num": 1
// },
// {
// "_id": "john",
// "num": 3
// }
// ]
// }