2

我正在尝试按“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操作符时,它工作得很好。

4

2 回答 2

4

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

你的数组应该看起来更像

{
  $project: {
    group_name: 1,
    group_id: 1
  },
},
{   
  $group:{
    _id:{
      group_name:'$group_name',
    },
    total_sum:{$sum:1}
  }
}    
于 2013-04-25T10:04:32.407 回答
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),
    ),
)
)
于 2013-04-02T03:01:34.437 回答