如何在MongoDB的shell中将NumberLong转换为Date?

时间:2014-04-09 13:33:21

标签: javascript mongodb

我将unix时间戳存储为MongoDB的NumberLong类型(毫秒),如何在Mongo shell中转换为人类可读的日期字符串?

6 个答案:

答案 0 :(得分:1)

为了我将来的参考(并纳入其他答案):

db.mycollection.aggregate([
  {$match:{"userId":"d1792d83-d854-44d5-9jc5-e3e20435958b"}},
  {$project:{newDate:Date("$numberLongDate")}}
])

答案 1 :(得分:1)

NumberLong(123123123123131).toNumber().toString()

答案 2 :(得分:0)

您可以将NumberLong值直接传递给Date构造函数,如果您使用new调用它,然后调用它上的toString()将其转换为人类可读的字符串:

> var n = NumberLong('1397051113715')
> (new Date(n)).toString()
Wed Apr 09 2014 08:45:13 GMT-0500 (CDT)

但是你应该强烈考虑在MongoDB中将这些时间戳存储为Date以获得更大的灵活性。

答案 3 :(得分:0)

我正在使用这样的表达式:

>Date(NumberLong("1397051113715")); 

它也会起作用。

答案 4 :(得分:0)

我使用以下方法将unix NumberLong纪元转换为日期:

new Date(1413382500151)

答案 5 :(得分:0)

不需要将其强制转换为字符串,例如

 >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")