php操作mongodb 分组排序

复制代码
 1 //连接mongodb
2
3 $db=db("127.0.0.1","27017","db_name");
4
5 //定义临时表和变量
6
7 $temptable="temp_softdownrank";
8
9 $softid="1";
10
11 $softname="a";
12 //删除临时表
13 $mdret=$db->$temptable->drop();
14
15 if($mdret)
16 {
17   //map/reduce 做分组排序
18
19   //要查询的列 用emit生成key=>value进行存储
20
21   $map = new MongoCode("function() { emit(this.softid, {count: 1, softid: this.softid, softname: this.softname}); }");
22
23   //要生成的列
24   $reduce = new MongoCode(
25     "function(key, value) {
26       var result = {count: 0};
27       for(var i=0; i<value.length; i++) {
28       result.count += value[i].count;
29       result.softid = value[i].softid;
30       result.softname = value[i].softname;
31   }
32
33   //返回结果
34   return result;
35   }");
36   //查询条件
37   $findarr=array('successtime'=>array('$lt' => "$endtime",'$gte' => "$startime"),'softid'=>new MongoRegex('/'.$softid.'/'),'softname'=>new MongoRegex('/'.$softname.'/'));
38
39   //生成collection
40   $softrank = $db->command(array(
41     "mapreduce" => "per_pc_softdowndetail",
42     "map" => $map,
43     "reduce" => $reduce,
44     "query" => $findarr,
45     "out" => array("merge" => "$temptable")
46   ));
47
48   $coll = $db->selectCollection($softrank['result']);
49
50   //根据字段进行排序
51   $result = $coll->find()->sort(array("value"=>-1));
52
53   //生成数组
54
55   foreach($result as $key=>$value)
56
57   {
58     $list[] = $value["value"];
59   }
60
61 }
62
63 else
64
65 {}
66
67 //$list 就是所得的数组
复制代码



posted @   博尔特希  阅读(2696)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!
点击右上角即可分享
微信分享提示