MongoDB группа по количеству в зависимости от условия - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть схема БД mongo ниже:

 {
    "_id" : "5b76c3c037548390fdb5b40e",
    "userId" : "4601",
    "modified" : ISODate("2018-08-21T19:13:43.301+05:30"),
    "rStatus" : "started",
},
{
    "_id" : "5b76c3c037548390fdb5b40e",
    "userId" : "13",
    "modified" : ISODate("2018-08-21T19:13:43.301+05:30"),
    "rStatus" : "completed",
},
........

Необходимо получить группу данных по дате изменения и количеству полей rStatus, например,

{
    modified:"2018-08-21",
    count :{"completed":1,"ongoing":4}
},{
    modified:"2018-07-23",
    count :{"completed":2,"ongoing":5}
},

Я использую $ group, но ее счет по дате изменения, а не по значениям внутренних ключей.

1 Ответ

0 голосов
/ 06 сентября 2018

Вы можете использовать ниже агрегации в 3,6.

db.colname.aggregate([
{"$group":{
  "_id":{
    "date":{"$dateToString":{"date":"$modified","format":"%Y-%m-%d"}},
    "rstatus":"$rStatus"
  },
  "count":{"$sum":1}
}},
{"$group":{
  "_id":"$_id.date",
  "count":{"$mergeObjects":{"$arrayToObject":[[["$_id.rstatus","$count"]]]}}
}}])
...