Монго Отличная Аггегация
Я пытаюсь использовать структуру агрегации для подсчета групп в монго, но результаты не совсем такие, как ожидалось.
Рассмотрим коллекцию ниже
$people->insert(array("user_id" => "1", "day" => "Monday", 'age' => 18));
$people->insert(array("user_id" => "3", "day" => "Monday", 'age' => 24));
$people->insert(array("user_id" => "1", "day" => "Monday", 'age' => 18));
$people->insert(array("user_id" => "1", "day" => "Monday", 'age' => 18));
$people->insert(array("user_id" => "2", "day" => "Monday", 'age' => 25));
$people->insert(array("user_id" => "4", "day" => "Monday", 'age' => 33));
$people->insert(array("user_id" => "1", "day" => "Tuesday", 'age' => 18));
$people->insert(array("user_id" => "2", "day" => "Tuesday", 'age' => 25));
$people->insert(array("user_id" => "1", "day" => "Wednesday", 'age' => 18));
$people->insert(array("user_id" => "2", "day" => "Thursday", 'age' => 25));
$people->insert(array("user_id" => "1", "day" => "Friday", 'age' => 18));
Я использую запрос ниже, попробуйте подсчитать количество различных записей (user_id) для каждого дня недели.
$query = array(
array(
'$project' => array(
'user_id' =>1,
'day' =>1,
),
),
array(
'$group' => array(
'_id' => array(
'user_id' => '$user_id',
'day' => '$day'),
'count' => array('$sum' => 1),
)
));
Так что для коллекции выше результаты должны быть
Monday = 3 Tues = 2, Wed = 1, Thur = 1 and Friday = 1
но он не группирует итоговые значения всех DISTINCT users_id за день, и вместо этого для каждого дня он дает мне итоговую сумму для каждого существующего user_id.
Результаты (не полные)
[result] => Array
(
[0] => Array
(
[_id] => Array
(
[user_id] => 1
[day] => Friday
)
[count] => 1
)
[1] => Array
(
[_id] => Array
(
[user_id] => 1
[day] => Wednesday
)
[count] => 1
)
[2] => Array
(
[_id] => Array
(
[user_id] => 2
[day] => Tuesday
)
[count] => 1
)
... ... ...
Может ли кто-нибудь помочь мне отфильтровать ежедневные итоги, чтобы они включали только отдельные итоги за день?
Я посмотрел на$ размотки но не мог по-настоящему обдумать это. `