Как преобразовать метку времени в дату в mongodb?

Я работаю над агрегацией коллекции mongodb. моя коллекция mongodb имеет creation_time в метке времени. Как я могу собрать результат в тот же день и агрегировать с результатом на следующий день. Предположим, мне нужно собирать данные в течение 5 дней. Моя коллекция mongodb:

{
    "_id" : "1522845653126"
},
{
    "_id" : "1522838153324"
},
{
    "_id" : "1513421466415"
},
{
    "_id" : "1515488183153"
},
{
    "_id" : "1521571234500"
}

Как я могу рассчитать. Сколько записей сохраняется на конкретную дату? и предположим, что я хочу запросить результаты, которые возвращают промежуточный итог агрегации, например:

{
 time: "2013-10-10"
 count: 3,

},
{
 time: "2013-10-11"
 total: 7,

}

что-то вроде этого. я пытался сделать что-то подобное

db.coll.aggregate([
   {
        $group:{
        _id:new Date($creation_time).toLocaleDateString(),
         $count:{$add:1}
            }
         time:new Date($creation_time).toLocaleDateString()
   }
 ])

Это не работает. Где я делаю не так? Я новичок в mongodb. Спасибо за любую помощь

Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
8
0
24 661
2

Ответы 2

Вы можете использовать агрегацию $toDate для преобразования метки времени в дату ISO и $toLong для преобразования метки времени строки в целочисленное значение в mongodb 3.6

db.collection.aggregate([
  { "$project": {
    "_id": {
      "$toDate": {
        "$toLong": "$_id"
      }
    }
  }},
  { "$group": {
    "_id": { "$dateToString": { "format": "%Y-%m-%d", "date": "$_id" } },
    "count": { "$sum": 1 }
  }}
])

Попробуй здесь

И с предыдущими версиями

db.collection.aggregate([
  { "$project": {
    "date": { "$add": [ new Date(0), "$_id" ] }
  }}
])

Полезно знать, но он поддерживает только MongoDB 4.0+…

Yongwei Wu 22.08.2018 11:08

@YongweiWu В предыдущей версии вы можете попробовать этот stackoverflow.com/questions/51889949/…

Ashh 22.08.2018 12:08

Можем ли мы изменить часовой пояс в добавлении

Akshay Hazari 12.08.2020 13:29

В моем случае , я использовал

db.collection.aggregate([
  { "$project": {
    "date": { "$toDate": { 
        $multiply:["$_id",1000 ]
             } 
       }
  }}
])

преобразовать метку времени из миллисекунд в секунды.

Другие вопросы по теме