почему автоматически конвертировать в ISODate? - PullRequest
1 голос
/ 16 января 2012

На оболочке, которую я пробовал на тестовой базе данных

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 ?? Могу ли я не сохранить дату, только что новый Date () возвращается в js?

1 Ответ

1 голос
/ 16 января 2012

ISODate - это вспомогательная функция оболочки для переноса конструктора Date в JavaScript. При вызове 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...