14

MongoDB に UNIX タイムスタンプを使用して日付を保存しましたが、クエリを実行するときに日付を取得するにはどうすればよいですか? タイムスタンプを ISODate 形式で表示する方法はありますか?

4

3 に答える 3

16

バックグラウンド

  • UNIX時間の値は、エポック(1970年1月1日)からの秒数を表します。

  • JavaScript Date()は、エポックからの ミリ を表します。

  • MongoDBでは、シェルのISO文字列から日付を作成できるISODate()便利なラッパーです。シェルで使用する場合は、を返します。Date()mongonew Date()ISODate()

変換

unixtimeaと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")
于 2013-03-01T13:34:53.070 に答える
6

Mongo コンソールではDate、ドキュメントが画面に出力される前に、タイムスタンプから JavaScript オブジェクトを作成できます。

> db.stuff.find().forEach(function (doc) {
  doc["timestamp_field"] = new Date(doc["timestamp_field"])
  printjson(doc)
})

通常のコードとは異なり、find()結果をページングせず、一致するすべてのドキュメントを一時停止せずに印刷します。

于 2013-02-23T20:18:12.670 に答える