当前位置: 首页 > 编程笔记 >

PHP中的mongodb group操作实例

安高义
2023-03-14
本文向大家介绍PHP中的mongodb group操作实例,包括了PHP中的mongodb group操作实例的使用技巧和注意事项,需要的朋友参考一下

紧接着上篇来,这篇主要讲,mongodb的group功能,做的还是挺强大的,相当对于find(),skip(),distinct()等,用法比较复杂。

测试数据


> db.fruit.find();  

{ "_id" : 1, "category" : "fruit", "name" : "apple" }  

{ "_id" : 2, "category" : "fruit", "name" : "peach" }  

{ "_id" : 3, "category" : "fruit", "name" : "banana" }  

{ "_id" : 4, "category" : "veggie", "name" : "corn" }  

{ "_id" : 5, "category" : "veggie", "name" : "broccoli" }  

1、根据category分组


> db.fruit.group(  

       {  

         key: { category: 1},  

         reduce: function(obj, prev) {  

                     prev.items.push(obj.name);  

                 },  

         initial: { items : [] }  

       }  

    );  

[  

        {  

                "category" : "fruit",  

                "items" : [  

                        "apple",  

                        "peach",  

                        "banana"  

                ]  

        },  

        {  

                "category" : "veggie",  

                "items" : [  

                        "corn",  

                        "broccoli"  

                ]  

        }  

]

php代码如下:


$keys = array("category" => 1);  

$initial = array("items" => array());  

$reduce = "function (obj, prev) { prev.items.push(obj.name); }";  

$g = $collection->group($keys, $initial, $reduce);  

  

print_r($g);   //结果如下。  

  

Array  

(  

    [retval] => Array  

        (  

            [0] => Array  

                (  

                    [category] => fruit  

                    [items] => Array  

                        (  

                            [0] => apple  

                            [1] => peach  

                            [2] => banana  

                        )  

  

                )  

  

            [1] => Array  

                (  

                    [category] => veggie  

                    [items] => Array  

                        (  

                            [0] => corn  

                            [1] => broccoli  

                        )  

  

                )  

  

        )  

  

    [count] => 5  

    [keys] => 2  

    [ok] => 1  

)

2、根据category来分组,并统计count


> db.fruit.group(  

           {  

             key: { category: 1},  

             cond: { _id: { $gt: 2 } },  

             reduce: function(obj, prev) {  

                prev.items.push(obj.name);  

                prev.count++;  

             },  

             initial: { items : [] ,count:0}  

           }  

        );  

[  

    {  

        "category" : "fruit",  

        "items" : [  

            "banana"  

        ],  

        "count" : 1  

    },  

    {  

        "category" : "veggie",  

        "items" : [  

            "corn",  

            "broccoli"  

        ],  

        "count" : 2  

    }  

]

php代码如下:


$keys = array("category" => 1);  

$initial = array("items" => array(),'count'=>0);  

$reduce = "function (obj, prev) { " .  

              "prev.items.push(obj.name); " .  

              "prev.count++;" .  

          "}";  

$condition = array('condition' => array("_id" => array( '$gt' => 2)));  

$g = $collection->group($keys, $initial, $reduce, $condition);  

  

print_r($g);   //结果如下。  

  

Array  

(  

    [retval] => Array  

        (  

            [0] => Array  

                (  

                    [category] => fruit  

                    [items] => Array  

                        (  

                            [0] => banana  

                        )  

  

                    [count] => 1  

                )  

  

            [1] => Array  

                (  

                    [category] => veggie  

                    [items] => Array  

                        (  

                            [0] => corn  

                            [1] => broccoli  

                        )  

  

                    [count] => 2  

                )  

        )  

  

    [count] => 3  

    [keys] => 2  

    [ok] => 1  

)  

3、利用aggregate group功能,也挺强大


> db.fruit.aggregate([  

                     { $match: { _id: {$gt:0} } },  

                     { $group: { _id: "$category", count: { $sum: 1 } } },  

                     { $sort: { count: -1 } }  

                   ]);  

{ "_id" : "fruit", "count" : 3 }  

{ "_id" : "veggie", "count" : 2 }  

php代码如下:


$cond = array(  

    array(  

        '$match' => array('_id' => array('$gt' => 0)),  

    ),  

    array(  

        '$group' => array(  

            '_id' => '$category',  

           'count' => array('$sum' => 1),  

        ),  

    ),  

    array(  

        '$sort' => array("count" => -1),  

    ),  

);  

$result = $collection->aggregate($cond);  

print_r($result);    //结果如下:  

  

Array  

(  

    [result] => Array  

        (  

            [0] => Array  

                (  

                    [_id] => fruit  

                    [count] => 3  

                )  

  

            [1] => Array  

                (  

                    [_id] => veggie  

                    [count] => 2  

                )  

  

        )  

  

    [ok] => 1  

)  

mongodb 的select 操作有很多,在这里,只是说了一些常用的功能。

 类似资料:
  • 本文向大家介绍php中memcache 基本操作实例,包括了php中memcache 基本操作实例的使用技巧和注意事项,需要的朋友参考一下 php中memcache 基本操作实例 我们再来看个更加具体些的实例 以上所述就是本文的全部内容了,希望大家能够喜欢。

  • 本文向大家介绍php实现的Cookies操作类实例,包括了php实现的Cookies操作类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现的Cookies操作类及其用法,分享给大家供大家参考。具体分析如下: 一、功能: 1.保存,读取,更新,清除cookies数据。 2.可设置前缀。 3.强制超时控制。 4.cookies数据可以是字符串,数组,对象等。 二、用法: Cook

  • 本文向大家介绍php针对cookie操作的队列操作类实例,包括了php针对cookie操作的队列操作类实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php针对cookie操作的队列操作类。分享给大家供大家参考。具体分析如下: 这里包括了从简单的cookie操作(增加,删除,修改)到我们的cookie队列操作类的操作,对此感兴趣的朋友可以参考一下。 一、PHP 的COOKIE cook

  • 本文向大家介绍php操作mongoDB实例分析,包括了php操作mongoDB实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php操作mongoDB的方法。分享给大家供大家参考。具体分析如下: mongoDB数据库是一种以json格式存储的数据库,非常适用于各种应用开发,这里就来给各位朋友介绍一些mongoDB学习实例. mongodb想要整合PHP,需要安装Mongo扩展,这个

  • 本文向大家介绍array_values()在php中返回数组的操作实例,包括了array_values()在php中返回数组的操作实例的使用技巧和注意事项,需要的朋友参考一下 在对数组的一些操作上,有些人对于键值方面不太理解。为了方便大家能够更好地对一些值进行返回,本篇带来了array_values() 函数进行介绍,使用后能直接返回数组。下面我们就array_values()函数的定义、语法、参

  • 本文向大家介绍PHP目录操作实例总结,包括了PHP目录操作实例总结的使用技巧和注意事项,需要的朋友参考一下 本文实例总结了PHP目录操作方法。分享给大家供大家参考,具体如下: 目录操作 新建目录:mkdir(路径,权限,递归创建) 删除目录:rmdir() 移动(改名):rename() 获取目录内容: //打开目录 目录句柄 = opendir() //读取目录 文件名 = readdir(目录