0

objectid のタイムスタンプに基づいて mongo コレクションで過去 24 時間に生成された objectid を取得する方法はありますか? mongodb で objectid を生成するアルゴリズムは何ですか?

4

1 に答える 1

1

objectidのタイムスタンプに基づいてmongoコレクションで過去24時間に生成されたobjectidを取得する方法はありますか?

次のような JavaScript コードを呼び出すことができます。

date = new Date()
date.setDate(date.getDate() - 1)
yesterday = Math.floor(date.getTime()/1000).toString(16)
db.coll.find({_id : {$gt : new ObjectId(yesterday + "0000000000000000")}} , {_id:1})

1 番目と 2 番目のステートメントは単純明快で、昨日の日付です。

3 行目は、昨日の 4 バイトの 16 進文字列を作成します。ObjectId の左端の 4 バイトです。

次に、ObjectId の右端の 8 バイトを気にしないので、0 で埋めます。これらは、MAC アドレス (3)、pid (2)、および実行中のカウンター (3) です。

あとは、コレクション (例) にクエリを実行collし、_id の値を返すだけです。

mongodbでobjectidを生成するアルゴリズムは何ですか

そこにいる

于 2013-08-05T21:43:13.180 に答える