Сводные документы Mongodb по дате, когда дата находится в отметке времени unix - PullRequest
0 голосов
/ 07 августа 2020

Я новичок в mongodb, так что это должен быть прямой запрос. У меня есть коллекция, как показано ниже, где дата хранится в unix миллисекундах

[
      {
        "createdAt": 1596700221742,
        "id": "5f2bb63da9babddd420d0fa6",
        "quoteId": "SBA0005",
        "commission": 0,
      },
      {
        "createdAt": 1596699868976,
        "id": "5f2bb4dcbcf1acdbb64137d0",
        "quoteId": "SBA0004",
        "commission": 0,
      },
      {
        "createdAt": 1596698702729,
        "id": "5f2bb04ebcf1acdbb64137ce",
        "quoteId": "SBA0003",
        "commission": 0,
      },
      {
        "createdAt": 1596200445326,
        "id": "5f2415fd9f248110a290aa29",
        "quoteId": "SBA0002",
        "commission": 100,
      },
      {
        "createdAt": 1596200404548,
        "id": "5f2415d49f248110a290aa28",
        "quoteId": "SBA0001",
        "commission": 100,
      },
      {
        "createdAt": 1596200326783,
        "id": "5f2415869f248110a290aa27",
        "quoteId": "SBA0000",
        "commission": 10,
      }
    ]

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

[{
date: '06-08-2020',
count: 1,
totalcommision: 100},
{
date: '07-08-2020',
count: 2,
totalcommision: 1000
}]

Любая помощь?

1 Ответ

1 голос
/ 07 августа 2020

Вам нужно использовать $ toDate для преобразования даты, хранящейся в Unix миллисекундах. Ниже представлен запрос агрегирования.

db.collection.aggregate([
  {
    "$addFields": {
      "cdate": {
        "$toDate": "$createdAt"
      }
    }
  },
  {
    "$project": {
      "ddate": {
        "$concat": [
          {
            "$toString": {
              $dayOfMonth: "$cdate"
            }
          },
          "-",
          {
            "$toString": {
              $month: "$cdate"
            }
          },
          "-",
          {
            "$toString": {
              $year: "$cdate"
            }
          }
        ]
      },
      "commission": 1
    }
  },
  {
    "$group": {
      "_id": "$ddate",
      "count": {
        "$sum": 1
      },
      "totalCommision": {
        "$sum": "$commission"
      }
    }
  },
  {
    "$project": {
      "date": "$_id",
      "count": 1,
      "totalCommision": 1,
      "_id": 0
    }
  }
])

Вот вам MongoPlayground .

...