如何在mongodb中将时间戳转换为日期?

5 mongodb mongodb-query aggregation-framework

我正在进行mongodb集合的聚合。我的mongodb集合在时间戳中具有creation_time。如何收集当天的结果并与第二天的结果进行聚合。假设我必须收集5天的数据。我的mongodb集合是:

{
    "_id" : "1522845653126"
},
{
    "_id" : "1522838153324"
},
{
    "_id" : "1513421466415"
},
{
    "_id" : "1515488183153"
},
{
    "_id" : "1521571234500"
}
Run Code Online (Sandbox Code Playgroud)

我该如何计算?在特定日期保存了多少项?假设我要查询的结果是返回汇总的运行总计,例如:

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

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

}
Run Code Online (Sandbox Code Playgroud)

这样的事情。我试图做这样的事情

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

它不起作用。我在哪里做错了?我是mongodb的新手。谢谢你的帮助

Ash*_*shh 6

您可以在mongodb 3.6中使用$toDate聚合将时间戳记转换为ISO日期以及$toLong将字符串时间戳记转换为整数值

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

在这里尝试

以及以前的版本

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