2013-04-01 2 views
1

내가 'GROUP_NAME'선택 필드 'GROUP_NAME'와 PHP 드라이버를 사용하여 통합 프레임 워크 "GROUP_ID"에 의해 그룹에 노력하고있어 :이납니다MongoDB를 그룹 및 프로젝트 운영

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 연산자 만 사용하면 올바르게 작동합니다.

+0

쉼표로 분리 같이해야합니까? http://php.net/manual/en/mongocollection.aggregate.php –

+0

코드에서 쉼표를 사용하고 있습니다. 이것은 단지 그것의 출력입니다. 내 구조가 맞습니까? – castt

답변

4

문제는 함께 당신의 $ 프로젝트와 $ 그룹을 그룹입니다.

귀하의 배열은 더

{ 
    $project: { 
    group_name: 1, 
    group_id: 1 
    }, 
}, 
{ 
    $group:{ 
    _id:{ 
     group_name:'$group_name', 
    }, 
    total_sum:{$sum: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), 
    ), 
) 
) 
+0

코드에서 쉼표를 사용하고 있습니다. 이것은 단순화를 위해 출력 된 것입니다. 왜 다른 어레이에 하나의 어레이를 추가 했습니까? 아니, 작동하지 않았다. – castt