为什么自动转换为ISODate?

时间:2012-01-16 10:40:21

标签: mongodb

在shell上我尝试了测试db

post = {"title" : "My Blog Post", "content" : "Here's my blog post.", ... "date" : new Date()}

但是当我尝试使用命令

检索它时
db.blog.find();

它给我输出

{ "_id" : ObjectId("4f13fdc4af1aaf90a686f8ae"), "title" : "My Blog Post", "content" : "Here's my blog post.", "date" : ISODate("2012-01-16T10:35:54.985Z") }

为什么它的显示日期为ISODate?我可以不在js中返回新的Date()日期保存日期吗?

1 个答案:

答案 0 :(得分:1)

ISODate是shell的辅助函数,用于包装javascript的Date构造函数。调用ISODate()new Date()应该生成完全相同的Date对象,它将以不同方式打印。

> var date = new Date(2012,01,16,10,35,54,985)
> var isodate = ISODate("2012-01-16T10:35:54.985Z")
> date.constructor == isodate.constructor
true

> date.constructor
function Date() {
    [native code]
}
> isodate.constructor
function Date() {
    [native code]
}

但:

> date.valueOf()
1329384954985
> isodate.valueOf()
1326710154985
> 

但是如果你使用完全相同的毫秒来构造它们,那么它们是相等的:

> date = new Date(isodate.valueOf())
> print(date)
Mon Jan 16 2012 11:35:54 GMT+0100 (CET)
> date.valueOf() == isodate.valueOf()
true