1

我真的很困惑,几天来一直在为此挠头。我有一个 PHP 脚本,它将一些用户配置文件存储在 MongoDB 中。用户可以登录、更改一些字段并注销。当他们登录时,它会记录最后一次登录日期/时间,当您修改某些内容时,它会使用 MongoDate 对象记录最后修改的日期/时间。

它有效..但有时..当然随机出现的内容,特定文档的日期重置为“ ISODate("1969-12-31T16:00:00-08:00")

我的文档存储日期如下:

dates: {
    created: ISODate("1969-12-31T16:00:00-08:00"),
    lastlogin: ISODate("1969-12-31T16:00:00-08:00"),
    modified: ISODate("1969-12-31T16:00:00-08:00")
},

我的 PHP 代码如下所示:

$collection->update(array('account.email' => $email), array('$set' => array('dates.lastlogin' => new MongoDate())));

任何人有任何想法为什么?

4

1 回答 1

0

MongoDate()表示自 1970 年 1 月 1 日以来的秒数(参考:MongoDate::__construct)。

您看到的日期是将未定义变量或 0(又名unix epoch)的值传递给MongoDate().

通常,此值将在 MongoDB 中保存为:

 ISODate("1970-01-01T00:00:00Z")

但是,由于您已将时区设置为,GMT -8您会看到日期偏移 8 小时,即:

 ISODate("1969-12-31T16:00:00-08:00")
于 2012-10-18T10:48:22.827 回答