Монго количество запросов в поле на основе строки после $ group - PullRequest
0 голосов
/ 03 мая 2019

Я хотел бы запросить количество вызовов после определенной даты, суммировать их продолжительность, сгруппировать их по groupId, а затем подсчитать количество активных / неактивных участников.Активное / неактивное состояние представлено строкой.

Я попытался найти документацию и стековый поток на предмет синтаксиса выполнения условной суммы состояния, но я не могу найти никаких примеров этого после выполнения $группа

db.calls.aggregate(
{ 
    $match : { createdAt: { $gte: ISODate("2019-05-02 18:58:46.284Z") } }
},
{ 
    $group : { 
       _id : "$groupId", 
       totalCalls : { $sum : 1 },
       totalDuration : { $sum : "$duration" },
       totalInactiveState : { $count : "state.active" },
       totalActiveState : { $count : "state.inactive" }

    }
})

1 Ответ

0 голосов
/ 03 мая 2019

$ cond может дать вам то, что вам нужно.Это в основном условный оператор для запуска сценария if

db.calls.aggregate(
{ 
    $match : { createdAt: { $gte: ISODate("2019-05-02 18:58:46.284Z") } }
},
{ 
    $group : { 
       _id : "$groupId", 
       totalCalls : { $sum : 1 },
       totalDuration : { $sum : "$duration" },
       totalInactiveState : { $sum : { $cond: [{'state.active': false}, 1, 0 ] } },
       totalActiveState : { $sum : { $cond: [{'state.active': true}, 1, 0 ] } }
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...