【问题标题】:how to convert timestamp to date in mongodb?如何在mongodb中将时间戳转换为日期?
【发布时间】:2018-04-25 14:28:32
【问题描述】:

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

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

我如何计算。在特定日期保存了多少条目? nd假设我想要的是查询返回聚合运行总数的结果,例如:

{
 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 的新手。 感谢您的帮助

【问题讨论】:

    标签: mongodb mongodb-query aggregation-framework


    【解决方案1】:

    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 }
      }}
    ])
    

    试试看here

    与以前的版本一样

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

    【讨论】:

    【解决方案2】:

    就我而言, 我用过

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

    将时间戳从毫秒转换为秒。

    【讨论】:

      猜你喜欢
      • 2019-05-09
      • 2021-10-23
      • 2018-12-25
      • 1970-01-01
      • 2019-09-15
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      相关资源
      最近更新 更多