агрегирование mongodb с использованием групп и совпадений - PullRequest
0 голосов
/ 08 июня 2019

Я использую mongodb с laravel, но я застрял в какой-то момент. Я хочу получить количество данных, превышающее created_at, а также группировать в день created_at. Также я хочу получить еще один счет, который сгруппирован по device_type. Пожалуйста, помогите мне. Ниже приведен код, который у меня есть. где $time:2019-06-01 00:00:00

Documents :

{ "_id" : ObjectId("5cf8b42136cbc8d0e2aad747"), "user_id" : 50146, "device_type" : 1, "created_at" : ISODate("2019-06-06T06:35:13.828Z") }
{ "_id" : ObjectId("5cf8b90f36cbc8d0e2aad749"), "user_id" : 50146, "device_type" : 1, "created_at" : ISODate("2019-06-06T06:56:15.046Z") }
{ "_id" : ObjectId("5cf8b91136cbc8d0e2aad74b"), "user_id" : 73854, "device_type" : 2, "created_at" : ISODate("2019-06-04T06:56:17.926Z") }
{ "_id" : ObjectId("5cf8b91536cbc8d0e2aad74d"), "user_id" : 73854, "device_type" : 2, "created_at" : ISODate("2019-06-03T06:56:21.595Z") }
{ "_id" : ObjectId("5cf8d0af36cbc8d0e2aad74f"), "user_id" : 50146, "device_type" : 1, "created_at" : ISODate("2019-05-31T08:37:03.454Z") }
{ "_id" : ObjectId("5cf8d0b236cbc8d0e2aad751"), "user_id" : 73854, "device_type" : 2, "created_at" : ISODate("2019-06-01T08:37:06.627Z") }
{ "_id" : ObjectId("5cf8d0b436cbc8d0e2aad753"), "user_id" : 73854, "device_type" : 2, "created_at" : ISODate("2019-06-02T08:37:08.786Z") }


MongoQuery :
UserSession::raw(function ($collection) use ($time) {
            return $collection->aggregate([
                ['$match' => [
                    "created_at" => ['$gte' => new \MongoDB\BSON\UTCDateTime($time)]
                ]],

                ['$group' => [
                    "_id" => ['$dateToString' => ["format" => "%Y-%m-%d", "date" => '$created_at']],
                    "count" => ['$sum' => 1]
                ]],
                [
                    '$sort' => ['_id' => 1]
                ],
            ]);
        });

Это дает мне счет только по группам created_at. Я также хочу еще один счет, который группируется по device_type, я здесь запутался. Помогите мне, пожалуйста. Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...