当前位置:Gxlcms > 数据库问题 > demo_10_04 云数据库聚合_group_02

demo_10_04 云数据库聚合_group_02

时间:2021-07-01 10:21:17 帮助过:26人阅读

// 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()         // 按多个值分组         // 按各个区域(region)获得相同最高分(score)的来分组,并求出各组虚拟币(coins)的总量:         // 如果没有相同最高分的组,则单独为一组         .group({             // 第一个字段 _id             _id: {                 region: ‘$region‘,                 maxScore: $.max(‘$scores‘)             },             // 第二个字段: totalCoins             totalCoins: $.sum(‘$coins‘)         })         .end();     return res; };
// 聚合之后的返回值 // { //  "affectedDocs": 4, //  "data": [{                //          "_id": {                     //              "maxScore": 20,        // "_id": "5", //              "region": "europe" //          }, //          "totalCoins": 60 //      }, //      { //          "_id": { //              "maxScore": 100,      //  "_id": "4", //              "region": "asia" //          }, //          "totalCoins": 40 //      }, //      { //          "_id": { //              "maxScore": 90,       // "_id": "3" + "_id": "2"  maxScore 相同  //              "region": "europe" //          }, //          "totalCoins": 70          // totalCoins相加 20 + 50 //      }, //      { //          "_id": { //              "maxScore": 80,      // "_id": "1" + "_id": "6", //              "region": "asia" //          }, //          "totalCoins": 220        // 100 + 120 //      } //  ] // }

demo_10_04 云数据库聚合_group_02

标签:没有   ali   str   max   group   ota   字段   nic   dem   

人气教程排行