1

私は本当に混乱しており、ここ数日間、これについて頭を悩ませています。MongoDB にいくつかのユーザー プロファイルを格納する PHP スクリプトがあります。ユーザーはログインして、いくつかのフィールドを変更し、ログアウトできます。ユーザーがログインすると、lastlogin の日付/時刻が記録され、何かを変更すると、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 に答える