Групповые группы и проектные операторы

Я пытаюсь группировать «group_name» и выбирать поля «имя_группы» и «group_id» с помощью php-драйвера с использованием структуры агрегации:

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 он работает отлично.

Solutions Collecting From Web of "Групповые группы и проектные операторы"

Проблема заключается в том, что вы группируете свои $ project и $ group вместе.

Ваш массив должен выглядеть больше

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

Вам нужно будет переформатировать, а также использовать запятые в качестве разделителей. Это конвейер, поэтому он принимает каждый элемент за раз.

Я не пробовал это, но попробую:

 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), ), ) )