ndoejs+mongodb 开发1:aggregate 分组求和
来源:互联网 发布:阿里云香港节点ip 编辑:程序博客网 时间:2024/05/20 10:21
/**auother : zhz * mongodb :分组求和 * array: * 控制的显示列$project,筛选条件 $match ,排序 $sort,分组key $group:_id ,求和值 $sum($max,$avg,$min等) * */HelperMongo.prototype.mGgruopAndsum = function(collectionName, array,callback) { var self = this; var reqId = _reqId++; _log(reqId,"开始查找数量... "+collectionName+","+JSON.stringify(array)); function process(callback) { _getCollection(self, collectionName, function (collection) { collection.aggregate(array,function(error,rst){ if (error) { global.err(collectionName + " : " + JSON.stringify(error)); return; } _log(reqId, "查找成功--> " + JSON.stringify(rst)); if(callback != undefined) callback(rst); }); }); } return _judgePromise(process,callback);};
function _judgePromise(process,callback){ if(callback==undefined){ return new global.Promise(function(resolve, reject) { process(resolve); }); }else{ process(callback); }}
//获得排名信息 function _get_rank_list(callback){ constructcommon_exports._get_curr_constructid(function(res) { constructid = res.constructid; app.mgCross.mGgruopAndsum(playerRecord.NAME,[ { $project : { //供使用的列 constructid : 1, self_gpid : 1, is_victory : 1, stars : 1, remain_time : 1, end_time : 1, curr_ispasslevel : 1, curr_match : 1 } }, { $match : { //筛选条件 constructid : constructid // is_victory : {"$ne":-1} //没结算的战斗不计入排行 } }, { $group : { _id : { self_gpid:"$self_gpid",curr_match:"$curr_match"}, //分组"$self_gpid" curr_levelcounts : { $sum : "$curr_ispasslevel" }, //运算 is_victory : { $sum : "$is_victory" }, stars : { $sum : "$stars" }, remain_time : { $sum : "$remain_time" }, end_time : { $max : "$end_time"} } } ],function(recordlist){ if(recordlist.length == 0){ var msg = {}; msg.rankinfo ={}; console.error("没有排行榜数据"); send(msg); } var lable = exUtil.timeUnix(); var array = []; for(var i = 0;i<recordlist.length;i++){ var doc = {}; var tar_gpid_temp = recordlist[i]._id["self_gpid"]; var tar_gpsid = tar_gpid_temp.split("-"); var tar_gsid = tar_gpsid[0]; var tar_pid = tar_gpsid[1]; doc.constructid = constructid; doc.gsid = tar_gsid; doc.pid = tar_pid; doc.curr_rank = lable; doc.level = (recordlist[i].curr_levelcounts) / 3 ; doc.victory = recordlist[i].is_victory; doc.star = recordlist[i].stars; doc.fighttime = recordlist[i].remain_time; doc.overtime = recordlist[i].end_time; doc.rankingAwards = ""; doc.isGetRankingAwards = 0; array.push(doc); } app.mgCross.mgInsert(trank.NAME,array,function(res){ //批量插入 callback(constructid,lable); }); }); }); }
阅读全文
0 0
- ndoejs+mongodb 开发1:aggregate 分组求和
- mongodb-aggregate聚合日期分组
- ndoejs+mongodb 开发2:去重
- ndoejs+mongodb 开发5:批量修改
- ndoejs+mongodb 开发3:count,统计条数
- ndoejs+mongodb 开发4: 随机查询一条数据
- mongodb的aggregate实例1
- mongodb聚合函数aggregate操作 分组分页查询统计
- spring-data mongodb aggregate 按照子文档属性分组用法
- mongodb 由于aggregate 分组过大 导致的bug
- mongodb的aggregate学习之1-pipeline
- node.js mongodb aggregate 分组时时间差8小时的解决方案
- Mongodb Aggregate,MapReduce Sample
- mongodb aggregate 级联查询
- Mongodb aggregate timezone 问题
- mongodb aggregate 聚合操作
- mongodb的aggregate 用法
- java mongodb aggregate用法
- HP-Socket v5.0.1:支持 IPv6 及多 SSL 证书
- 名校不是门槛,吴恩达:培养一百万个AI人才 | 数据周报
- 虚拟币开发专题(山寨币怎样用Qt命令行分析区块信息)
- java.io.FileNotFoundException: .\xxx\xxx.png (系统找不到指定的路径。)
- 大公司里怎样开发和部署前端代码?
- ndoejs+mongodb 开发1:aggregate 分组求和
- HDU 6129 Just do it
- Qt求学路1
- mysql 2002 错误
- mmap在iOS系统上IO优化的体现
- 连续子数组的最大和
- linux下查看本机外网ip
- 利用R整合数据
- 定时ajax获取日志(easyui进度条+js滚动条)