在mongo shell中以人类可读的格式显示时间戳日期

时间:2016-04-29 16:15:21

标签: mongodb shell

假设我正在使用mongo.shell,我运行db.collection.find()。pretty()来获取此信息:

{
   "name" : "foo",
   "parent" : "bar",
   "createdDate" : NumberLong("12345678"),
   "modifiedDate" : NumberLong("12345679")
}

我希望这些日期是人类可读的东西,我希望能够以最少的努力获得这些日期。

有没有办法设置我的.mongorc.js文件自动将这些值转换为人类可读日期,可能是通过指定我认为日期字段的确切字段?如果不是什么是最方便的语法添加到我的查找调用,以便在需要时快速将日期转换为人类可读?

1 个答案:

答案 0 :(得分:1)

您可以使用聚合并格式化日期字符串。

db.collection.aggregate(
   [
     {
       $project: {
               name: 1, 
               parent: 1, 
               readableCreatedDate: { $dateToString: { format: "%Y-%m-%d %H:%M:%S", date: "$createdDate" } },
               readableModifiedDate: { $dateToString: { format: "%Y-%m-%d %H:%M:%S", date: "$modifiedDate" } }
       }
     }
   ]
)

注意:我在3.2版本中测试过类似的情况,我猜它可以在3.0版本中运行。另外,在我的案例中,日期的数据类型是ISODate而不是NumberLong

mongodb文档看起来像这样,

{
    "_id" : ObjectId("xxxxxxxx"),
    "endTime" : ISODate("2016-09-13T08:16:52.915Z"),
    "startTime" : ISODate("2016-09-13T08:16:52.915Z"),
    "__v" : 0
}