服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - MongoDB - PHP中的mongodb group操作实例

PHP中的mongodb group操作实例

2020-04-28 15:07MongoDB教程网 MongoDB

这篇文章主要介绍了PHP中的mongodb group操作实例,本文给出了3个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 操作有很多,在这里,只是说了一些常用的功能。

延伸 · 阅读

精彩推荐
  • MongoDBWindows下MongoDB配置用户权限实例

    Windows下MongoDB配置用户权限实例

    这篇文章主要介绍了Windows下MongoDB配置用户权限实例,本文实现需要输入用户名、密码才可以访问MongoDB数据库,需要的朋友可以参考下 ...

    MongoDB教程网3082020-04-29
  • MongoDBMongodb索引的优化

    Mongodb索引的优化

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。接下来通过本文给大家介绍Mongodb索引的优化,本文介绍的非常详细,具有参考借鉴价值,感...

    MRR3252020-05-05
  • MongoDBMongoDB查询之高级操作详解(多条件查询、正则匹配查询等)

    MongoDB查询之高级操作详解(多条件查询、正则匹配查询等)

    这篇文章主要给大家介绍了关于MongoDB查询之高级操作(多条件查询、正则匹配查询等)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者...

    w田翔3872020-12-19
  • MongoDBMongoDB的索引

    MongoDB的索引

    数据库中的索引就是用来提高查询操作的性能,但是会影响插入、更新和删除的效率,因为数据库不仅要执行这些操作,还要负责索引的更新 ...

    MongoDB教程网2532020-05-12
  • MongoDBMongoDB系列教程(五):mongo语法和mysql语法对比学习

    MongoDB系列教程(五):mongo语法和mysql语法对比学习

    这篇文章主要介绍了MongoDB系列教程(五):mongo语法和mysql语法对比学习,本文对熟悉Mysql数据库的同学来说帮助很大,用对比的方式可以快速学习到MongoDB的命...

    MongoDB教程网3252020-05-01
  • MongoDB在mac系统下安装与配置mongoDB数据库

    在mac系统下安装与配置mongoDB数据库

    这篇文章主要介绍了在mac系统下安装与配置mongoDB数据库的操作步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    CXYhh1219312021-11-14
  • MongoDBMongoDB多条件模糊查询示例代码

    MongoDB多条件模糊查询示例代码

    这篇文章主要给大家介绍了关于MongoDB多条件模糊查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值...

    浅夏晴空5902020-05-25
  • MongoDBmongodb数据库基础知识之连表查询

    mongodb数据库基础知识之连表查询

    这篇文章主要给大家介绍了关于mongodb数据库基础知识之连表查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mongodb具有一定的参...

    ZJW02155642020-05-22