MongoDBでObjectId(プライマリキー)だけを使って時刻指定検索する

MongoIdの上位4バイトにはドキュメント挿入時刻がunix timeで格納されているので、例えばPHPの場合このようにして時間を範囲指定できる。

$condition["_id"] =  = array(
    '$gte' => new MongoId(sprintf("%08x%016x", time() - 60, 0)),
    '$lt'  => new MongoId(sprintf("%08x%016x", time(), 0)),
)

インデックスを追加せずに済むので容量や性能的にうれしい。