手机
当前位置:查字典教程网 >编程开发 >MongoDB >PHP中的mongodb group操作实例
PHP中的mongodb group操作实例
摘要:紧接着上篇来,这篇主要讲,mongodb的group功能,做的还是挺强大的,相当对于find(),skip(),distinct()等,用法...

紧接着上篇来,这篇主要讲,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中的mongodb group操作实例】相关文章:

MongoDB中的MapReduce简介

MongoDB与MySQL常用操作语句对照

mongodb 集群重构和释放磁盘空间实例详解

mac下使用brew 安装mongodb的方法教程

mongodb 3.2.5安装详细过程

MongoDB 语法使用小结

【MongoDB for Java】Java操作MongoDB数据库

MongoDB入门教程之C#驱动操作实例

mongodb使用心得简单总结

mongodb+php实现简单的增删改查

精品推荐
分类导航