не удается сгруппировать дату и поле в mongodb

#javascript #mongodb #mongoose

#javascript #mongodb #mongoose

Вопрос:

Я пытаюсь сгруппировать поле даты и имени, а затем нахожу количество каждого дня.Я не могу различать дату и время, поэтому мой подход заключается в группировке на основе даты, а также времени в формате ISO.

Мой подход:-

 db.getCollection('blog').aggregate([
            { "$group": {
              "_id": {"name":"$name","date":"$date"},
              "Count": {
                "$sum": {
                  "$sum": "$Count"
                }
              }
            }},
            { "$project": {
              "name": "$_id",
              "Count": "$Count",
              "_id": 0
            }}
          ]).toArray()
  

ввод:-

 { "_id" : ObjectId("1"), "Count" : 4 , "name" : Ram, "date" : ISODate("2017-02-01T00:00:00Z") }
{ "_id" : ObjectId("2"), "Count" : 4, "name" : Arjun, "date" : ISODate("2017-01-08T00:00:00Z") }
{ "_id" : ObjectId("3"), "Count" :2 , "name" : Ram, "date" : ISODate("2017-02-01T00:00:00Z")}
{ "_id" : ObjectId("4"), "Count" : 2, "name" : Arjun, "date" : ISODate("2017-01-08T00:00:00Z") }
{ "_id" : ObjectId("5"), "Count" : 6, "name" : Arjun, "date" : ISODate("2017-01-08T00:00:00Z") }
{ "_id" : ObjectId("6"), "Count" : 6, "name" : Shyam, "date" : ISODate("2017-02-09T00:00:00Z")}
{ "_id" : ObjectId("7"), "count" : 1, "name" : Shyam, "date" : ISODate("2017-02-03T00:00:00Z") }
{ "_id" : ObjectId("8"), "loginID" : 2, "name" : Arjun, "date" : ISODate("2017-02-08T00:00:00Z") }
  

Ожидаемый результат:-

 {
name:Ram,
Count:6,
date:2017-02-01
}
{
name: Arjun,
Count:12,
date:2017-02-08
}
{
name: Arjun,
Count:2,
date:2017-01-08
}
....Something like that
  

Комментарии:

1. Вы уже пробовали что-нибудь?

2. да, я пытался.

3. Да, но… Что вы пробовали?

4. Я добавил свой подход. Пожалуйста, посмотрите мой обновленный вопрос

Ответ №1:

Вы используете $sum дважды на вашем $group этапе, вам это нужно только один раз.

 db.getCollection('blog').aggregate([
  {
    $group: {
      _id: {
        name: "$name",
        date: "$date"
      },
      Count: {
        $sum: "$Count"
      }
    }
  },
  {
    $project: {
      name: "$_id.name",
      date: "$_id.date",
      Count: 1,
      _id: 0
    }
  }
])