我在MongoDB中将Unix时间戳以NumberLong
类型(毫秒)存储,如何在Mongo shell中将其转换为易于阅读的日期字符串?
我在MongoDB中将Unix时间戳以NumberLong
类型(毫秒)存储,如何在Mongo shell中将其转换为易于阅读的日期字符串?
以下是我自己以及其他答案的参考:
db.mycollection.aggregate([
{$match:{"userId":"d1792d83-d854-44d5-9jc5-e3e20435958b"}},
{$project:{newDate:Date("$numberLongDate")}}
])
NumberLong(123123123123131).toNumber().toString()
我正在使用像这样的表达式:
>Date(NumberLong("1397051113715"));
这也可以工作。
new Date(1413382500151)
>var a = db.collection.findOne({name :"zengse"},{"createDate":1,_id:0})
> a.createDate
NumberLong("1575741914380")
> var b = a.createDate.toNumber()
> new Date(b)
ISODate("2019-12-07T18:05:14.380Z")
如果您使用new
关键字调用Date
构造函数并在其上调用toString()
方法将其转换为可读字符串,则可以直接将NumberLong
值传递给它:
> var n = NumberLong('1397051113715')
> (new Date(n)).toString()
Wed Apr 09 2014 08:45:13 GMT-0500 (CDT)
但是你应该强烈考虑将这些时间戳存储为 MongoDB 中的 Date
类型,以获得更大的灵活性。
$numberLongDate
返回相同的日期。 - fred271828newDate:{$add: [new Date("1970-01-01"), "$numberLongDate"]}
。 - fred271828db.mycoll.aggregate([ {$project:{newDate:{$add:[new Date(“1970-01-01”),"$numberLongDate"]}}} ])
- davo777