使用PHP在Mongo中分组

时间:2012-05-06 05:41:27

标签: mongodb group-by mongodb-php mongodb-query

我正在尝试对mongoDB进行群组查询,但是我得到了错误的结果,并且所有调整都无法解决我的问题。

我有一个带有以下架构的集合(action_是一个计数器)

"_id": ObjectId(""),
"action_1": 3,
"action_2": 2,
"action_4": 0,
"shop": ObjectId(""),
"user": ObjectId(""),
"action_3": 33 

我需要每个用户汇总所有商店的所有柜台,我已经这样做了:

$keys = array("action_1"=>1, "action_2"=>1, "action_3"=>1, "action_4"=>1); 
$initial = array("action_1"=>0, "action_2"=>0, "action_3"=>0, "action_4"=>0); 
$reduce = "function (obj, prev) { 
    prev.action_1 += obj.action_1; 
    prev.action_2 += obj.action_2; 
    prev.action_3 += obj.action_3; 
    prev.action_4 += obj.action_4; 
}";
$condition = array('user' => $user_id);
$g = $collection->group($keys, $initial, $reduce, $condition);

我得到的结果是提取值的文档数组。我需要一组关联数组,并为每个用户提供类似的东西:

array ("user") {
    action_1 => sum, //integer
    action_2 => sum,
    action_3 => sum,
    action_4 => sum
}

1 个答案:

答案 0 :(得分:0)

您需要按user键进行分组,而不是:

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