UNIXタイムスタンプを使用して日付をMongoDBに保存しましたが、クエリを実行したときに日付を取得するにはどうすればよいですか?タイムスタンプをISODate形式で表示する方法はありますか?
nixtime 値は、エポック(1970年1月1日)以降の秒を表します。
JavaScript Date() は、エポック以降のミリ秒を表します。
MongoDBでは、 ISODate()
はDate()
の便利なラッパーであり、mongo
シェルのISO文字列から日付を作成できます。シェルでnew Date()
を使用すると、ISODate()
が返されます。
unixtime
とISODate()の間で変換するには、UNIXタイムスタンプに1000を掛けて、この値をnew Date()
コンストラクターに渡すことができます。
mongo
シェルの簡単な例:> db.mydata.insert({
unixtime: 1362143511
})
> var doc = db.mydata.findOne();
// convert unixtime seconds to milliseconds and create JS date
> var date = new Date(doc.unixtime * 1000);
> date
ISODate("2013-03-01T13:11:51Z")
Mongoコンソールでは、ドキュメントが画面に出力される前に、タイムスタンプからJavaScript Date
オブジェクトを作成できます。
_> db.stuff.find().forEach(function (doc) {
doc["timestamp_field"] = new Date(doc["timestamp_field"])
printjson(doc)
})
_
通常のfind()
とは異なり、このコードには注意してください。結果はページングされませんが、一致するすべてのドキュメントが一時停止せずに印刷されます。