免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3775 | 回复: 2

[MongoDB] php mongodb 实现group 并按照某字段排序 [复制链接]

论坛徽章:
0
发表于 2012-03-01 17:34 |显示全部楼层
php mongodb 实现group 并按照某字段排序





php
  1. require_once ('../Config.class.php');
  2. //////////////////
  3. $mongo = new Mongo(Config::MONGO_CONNECTION_STR);
  4. $mongo->setSlaveOkay(true);
  5. $db = null;
  6. if (!empty($mongo)){
  7. $db = $mongo->selectDB(Config::MONGO_CONNECTION_DB_NAME);
  8. }
  9. $collection = null;
  10. if (empty($db)) {
  11. echo "db null";
  12. exit();
  13. } else {
  14. $collection = $db->CategoryModel;
  15. }
  16. /*$collection->insert(array("category" => "fruit", "age" => 1, "name1" => "apple1"));
  17. $collection->insert(array("category" => "fruit", "age" => 2,"name1" => "apple1"));
  18. $collection->insert(array("category" => "fruit", "age" => 3,"name1" => "apple1"));
  19. $collection->insert(array("category" => "veggie", "age" => 4,"name1" => "apple1"));
  20. $collection->insert(array("category" => "veggie", "age" => 5,"name1" => "apple1"));*/
  21. $keys = array("category" => 1);
  22. $initial = array("items" => array(),"index"=>-1,"total"=>0);
  23. $reduce = "function (obj, prev) {
  24. prev.total++;if(obj.age == 2){
  25. prev.index=prev.items.length+1;}
  26. if(prev.items.length < 2){
  27. prev.items.push(obj);
  28. }
  29. var arr = prev.items;if(arr.length > 0)
  30. {
  31. for(var i=0;i<arr.length;i++){
  32. for(var j=0;j<arr.length-i-1;j++){
  33. if(arr[j].age < arr[j + 1].age){
  34. var temp = arr[j];
  35. arr[j] = arr[j + 1];
  36. arr[j + 1] = temp;}
  37. }
  38. }
  39. if(arr.length>2){
  40. arr = arr.slice(0,2);
  41. }
  42. }
  43. }";

  44. //$condition = array("category" => array( '$in' => array("fruit")));
  45. $g = $collection->group($keys, $initial, $reduce);
  46. print_r($g);
  47. //////////////////////
复制代码
demo写的比较乱,,自

论坛徽章:
0
发表于 2012-03-01 22:40 |显示全部楼层
谢谢分享

论坛徽章:
0
发表于 2013-09-12 17:21 |显示全部楼层
怎么实现排序的?分析一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP