sails-mongo 使用 groupBy 进行分组遇到的坑
来源:互联网 发布:js分页思路 编辑:程序博客网 时间:2024/06/07 12:17
博主在实现分组统计功能时又遇到坑,参见我以前写的博客sails-mysql 使用 groupBy 进行分组遇到的坑
今天我们来谈谈mongodb的分组功能,需要注意的地方同上,groupBy 要与 sum, average, min, max 成对出现,这里不再多说。
这次遇到的需求比较复杂,涉及到分组、排序、分页、对比排名。首先要分组,然后排序,然后分页,最后对比排名。
先放代码,看博主是怎么征服这些需求的,哈哈哈哈哈哈哈
var field = req.body['field'] || 'keyword';//要分组的字段,默认关键字var starttime = req.body['starttime'] || 1451577600;//时间戳var starttime2 = req.body['starttime2'] || 1451577600;var endtime = req.body['endtime'] || 1454255999;var endtime2 = req.body['endtime2'] || 1454255999;var page = req.body.page || 1;var limit = req.body.limit || 10;var skip = (page-1)*limit;var query = req.body['query'] || '';//搜索词 query = Util.RemoveXSS(query);var match1 = { visitime: { '$gte': parseInt(starttime), '$lte': parseInt(endtime) } };var match2 = { visitime: { '$gte': parseInt(starttime2), '$lte': parseInt(endtime2) } };if(query!=''){ match1[field] = { $regex: query, $options: '$i' }; match2[field] = { $regex: query, $options: '$i' };}//数量条件var where = [ { $match: match1 }, { $group: { _id: '$'+field, value: { $sum: 1 } } }, { $sort: { value: -1 } }];//对比条件var where2 = [ { $match: match2 }, { $group: { _id: '$'+field, value: { $sum: 1 } } }, { $sort: { value: -1 } }];Model.native(function(err, collection) { if(err){ return next(err); } var logDoc = collection.aggregate(where);//总数据 logDoc.toArray(function (err, log) { if(err){ return next(err); } var count = log.length; logDoc.skip(parseInt(skip)).limit(parseInt(limit))//分页 .toArray(function (err, data1) { if(err){ return next(err); } collection.aggregate(where2).toArray(function (err, data2) { if(err){ return next(err); } var i = data1.length;//现在排名 while (i--) { data1[i].name = data1[i]['_id']; data1[i].value2 = skip+i+1; var j = data2.length;//对比排名 while (j--) { if(data1[i]['_id'] == data2[j]['_id']){ //排名变化 data1[i].value3 = j - i; break; } //避免过量对比 if(j+limit+100 < data2.length){break;} } } return res.send({ count: count, data: data1 }); }); }); });});
2017年9月13日
重庆-传说
阅读全文
0 0
- sails-mongo 使用 groupBy 进行分组遇到的坑
- sails-mysql 使用 groupBy 进行分组遇到的坑
- datatable使用groupby进行分组统计
- datatable使用groupby进行分组统计
- C# datatable使用groupby进行分组统计
- pandas中Groupby的使用(三)-根据dtype对列进行分组
- python中Groupby使用(四)-通过函数进行分组
- 使用linq 中的GroupBy分组
- Linq 中按照多个值进行分组(GroupBy)
- Linq 中按照多个值进行分组(GroupBy
- linq ,lamda 进行分组GroupBy查询
- 用groupby对可迭代对象进行分组
- pandas中Groupby使用(二)-对分组进行迭代
- c# Linq Lamda表达式使用 GroupBy 分组
- PHP使用mongo是遇到的错误
- Mongo多条件查询与分组的使用
- LINQ实现多次调用GroupBy进行分组统计
- Linq 和 Lambda 查询中按照多个值进行分组GroupBy
- 微信小程序全局变量
- Spring 框架
- 归并排序 --C语言实现
- mysql常用函数汇总(转载)
- 【Java概念】抽象类(10)
- sails-mongo 使用 groupBy 进行分组遇到的坑
- Tomcat 6中配置BoneCP数据源
- 使用Tomcat-redis-session-manager来实现Tomcat集群部署中的Session共享
- 182. Duplicate Emails
- 用Struts输出Hello
- 连岗位需求都不知道,你凭什么能胜任这份工作?
- Windows程序设计-模态对话框和非模态对话框
- 19个必须知道的Visual Studio快捷键
- Java中ArrayList和LinkedList区别