まくろぐ

MongoDB の ObjectId について(Document の生成時間を調べる)

更新:
作成:

MongoDB の各 Document(RDB でいうレコード)は、それぞれ _id というプライマリキーとなるフィールドを持っています。 この値は、何も指定しないと、自動的に ObjectId オブジェクトが生成されて設定されます。

> db.mycollection.insert({value:100})
> db.mycollection.findOne()
{ "_id" : ObjectId("5265e358c76d2a2f8b870057"), "value" : 100 }

この ObjectId オブジェクトは BSON 形式 のオブジェクトで、内部的に以下のような値を保持しています。

フィールドサイズ内容
Timestamp4 bytes生成時間(秒)
Machine ID3 bytesマシン固有値
PID2 bytesプロセス ID
Counter3 bytesランダム値から始まってインクリメントされる

ObjectId オブジェクト内に含まれているタイムスタンプは、getTimestamp() メソッドによって取得できます。 これを利用すると、Document の _id フィールドから、その Document が生成された時間を調べることができます。

> db.mycollection.findOne()._id.getTimestamp()
ISODate("2013-10-22T02:30:48Z")

関連記事

まくろぐ
サイトマップまくへのメッセージ