|
紧接着上篇来,这篇主要讲,mongodb的group功能,做的还是挺强大的,相当对于find(),skip(),distinct()等,用法比较复杂。
测试数据:
复制代码 代码如下:
> db.fruit.find();
{ "_id" : 1,"category" : "fruit","name" : "apple" }
{ "_id" : 2,"name" : "peach" }
{ "_id" : 3,"name" : "banana" }
{ "_id" : 4,"category" : "veggie","name" : "corn" }
{ "_id" : 5,"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代码如下:
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|