Агрегируйте и группируйте по месяцам вложенные данные mongodb: - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть вложенные данные, как показано ниже.

{"event":{
            "timestamp":"2020-01-01T08:36:29",
            "counters":[
                {
                    "name":"launches",
                    "value":100
                },
                {
                    "name":"cok",
                    "value":10
                },
            ]
        }
    },


{
    "event":{
            "timestamp":"2020-01-15T10:36:37",
            "counters":[
                {
                    "name":"launches",
                    "value":150
                },
                {
                    "name":"cok",
                    "value":20
                }
            ]
        }
    },


{
        "event":{
            "timestamp":"2020-02-01T12:36:44",
            "counters":[
                {
                    "name":"launches",
                    "value":250
                },
                {
                    "name":"cok",
                    "value":35
                }
            ]
        }
    },


{
        "event":{
            "timestamp":"2020-02-22T14:36:52",
            "counters":[
                {
                    "name":"launches",
                    "value":350
                },
                {
                    "name":"cok",
                    "unit":"count",
                    "value":50
                }
            ]
        }
    },

После агрегирования мы ожидаем результат, такой как

Январь месяц, ожидающий результат, такой как

{
    "event":{
        "timestamp":"2020-01-15T10:36:37",
        "counters":[
            {
                "name":"launches",
                "value":150         **(1st document value - last document value of the month)**
            },
            {
                "name":"cok",
                "unit":"count",
                "value":10          (1st document value - last document value of the month)
            }
        ]
    }
},

Февраль месяц, ожидающий результат как

{
    "event":{
        "timestamp":"2020-02-22T14:36:52",
        "counters":[
            {
                "name":"launches",
                "value":100         (1st document value - last document value of the month)
            },
            {
                "name":"cok",
                "unit":"count",
                "value":40          (1st document value - last document value of the month)
            }
        ]
    }
},

Мы хотим получить одну группу документов по месяцам, а значение счетчиков должно быть равно 1-му значению документа месяца - последнему значению документа месяца

...