MongoDB の各 Document(RDB でいうレコード)は、それぞれ _id
というプライマリキーとなるフィールドを持っています。
この値は、何も指定しないと、自動的に ObjectId
オブジェクトが生成されて設定されます。
> db.mycollection.insert({value:100})
> db.mycollection.findOne()
{ "_id" : ObjectId("5265e358c76d2a2f8b870057"), "value" : 100 }
この ObjectId
オブジェクトは BSON 形式 のオブジェクトで、内部的に以下のような値を保持しています。
- (4 bytes) Timestamp … 生成時間(秒)
- (3 bytes) Machine ID … マシン固有値
- (2 bytes) PID … プロセス ID
- (3 bytes) Counter … ランダム値から始まってインクリメントされる
ObjectId
オブジェクト内に含まれているタイムスタンプは、getTimestamp()
メソッドによって取得できます。
これを利用すると、Document の _id
フィールドから、その Document が生成された時間を調べることができます。
> db.mycollection.findOne()._id.getTimestamp()
ISODate("2013-10-22T02:30:48Z")