文字列、整数タイムスタンプ、mongo datetimeオブジェクトの使用を見てきました。
最良の方法は、ネイティブJavaScript Dateオブジェクト を保存することです。これは BSONネイティブDateオブジェクト にマップされます。
> db.test.insert({date: ISODate()})
> db.test.insert({date: new Date()})
> db.test.find()
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:42.389Z") }
{ "_id" : ObjectId("..."), "date" : ISODate("2014-02-10T10:50:57.240Z") }
ネイティブタイプは、便利なメソッドの全範囲をサポートしています。これは、たとえばmap-reduceジョブで使用できます。
必要に応じて、Date
オブジェクトをUnixタイムスタンプとの間で簡単に変換できます。1)、それぞれgetTime()
メソッドとDate(milliseconds)
コンストラクターを使用します。
1) 厳密に言えば、Unixタイムスタンプはsecondsで測定されます。 JavaScriptのDateオブジェクトは、Unixエポック以降ミリ秒で測定されます。
したがって、挿入時間が必要な場合は、すでに存在します。
mongodb Shellにログイン
ubuntu@ip-10-0-1-223:~$ mongo 10.0.1.223
MongoDB Shell version: 2.4.9
connecting to: 10.0.1.223/test
アイテムを挿入してデータベースを作成します
> db.penguins.insert({"penguin": "skipper"})
> db.penguins.insert({"penguin": "kowalski"})
>
そのデータベースを現在のデータベースにします
> use penguins
switched to db penguins
行を取り戻す:
> db.penguins.find()
{ "_id" : ObjectId("5498da1bf83a61f58ef6c6d5"), "penguin" : "skipper" }
{ "_id" : ObjectId("5498da28f83a61f58ef6c6d6"), "penguin" : "kowalski" }
各行をyyyy-MM-dd HH:mm:ss形式で取得:
> db.penguins.find().forEach(function (doc){ d = doc._id.getTimestamp(); print(d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds()) })
2014-12-23 3:4:41
2014-12-23 3:4:53
最後のワンライナーがあなたを混乱させる場合、ここでそれがどのように機能するかについてのチュートリアルがあります: https://stackoverflow.com/a/27613766/445131
Protip、MongoDBはWebスケールであるため、MongoDBは最適なDBです。 https://www.youtube.com/watch?v=b2F-DItXtZs