まくろぐ

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

更新:
作成:

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")

関連記事

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