Mongo Distinct Aggegation

Ich versuche, das Aggregationsframework zu verwenden, um Gruppenzählungen im Mongo durchzuführen, aber die Ergebnisse sind nicht genau wie erwartet.

Betrachten Sie die Sammlung unten

 $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));

Ich benutze die Abfrage unten und zähle die Anzahl der unterschiedlichen Einträge (user_id) für jeden Wochentag.

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

Also für die obige Sammlung sollten die Ergebnisse sein

Monday = 3     Tues = 2,     Wed = 1,     Thur = 1 and    Friday = 1

Es gruppiert jedoch nicht die Gesamtsummen aller DISTINCT-Benutzer-IDs unter einem Tag, sondern gibt mir für jeden Tag eine Gesamtsumme für jede vorhandene Benutzer-ID. "

Ergebnisse (nicht vollständig)

     [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
            )
... ... ...

Kann mir jemand helfen, die täglichen Summen so zu filtern, dass sie nur unterschiedliche Summen pro Tag enthalten

Ich habe das angeschaut$ abwickeln aber ich konnte es nicht wirklich verstehen. `

Antworten auf die Frage(1)

Ihre Antwort auf die Frage