Mongodb集团和项目运营商

时间:2013-04-01 22:54:48

标签: php mongodb mongodb-query

我正在尝试按“group_name”进行分组,并使用汇总框架使用php驱动程序选择字段“group_name”和“group_id”:

Array
(
    [$project] => Array
        (
            [group_name] => 1
            [group_id] => 1
        )

    [$group] => Array
        (
            [_id] => $group_name
            [total_sum] => Array
                (
                    [$sum] => 1
                )

        )

)

我收到了这个:[errmsg] => exception: A pipeline stage specification object must contain exactly one field. 但是,当我仅使用$project$group运算符时,它的工作正常。

2 个答案:

答案 0 :(得分:4)

问题是您将$ project和$ group分组在一起。

您的数组看起来应该更像

{
  $project: {
    group_name: 1,
    group_id: 1
  },
},
{   
  $group:{
    _id:{
      group_name:'$group_name',
    },
    total_sum:{$sum:1}
  }
}    

答案 1 :(得分:0)

您需要重新格式化并使用逗号作为分隔符。它是一个管道,所以它一次只需要每个项目。

我没试过,但试试:

array
(
array(
array(
    '$project' => array(
        "group_name" => 1,
        "group_id"   => 1,
    )
),

array(
    '$group' => array(
        "_id" => array("group_name" => '$group_name'),
        "total_sum" => array('$sum' => 1),
    ),
)
)