過去にこのドキュメントの作成をシミュレートするために、mongo シェルで新しい ObjectId を作成したいのですが、過去の Date に対して作成します。これは、ObjectId のgetTimestamp()関数の反対になります(つまり、タイムスタンプを指定し、呼び出し時にそのタイムスタンプを返す ObjectId を取得しますgetTimestamp
)。
これを行う方法はありますか?
過去にこのドキュメントの作成をシミュレートするために、mongo シェルで新しい ObjectId を作成したいのですが、過去の Date に対して作成します。これは、ObjectId のgetTimestamp()関数の反対になります(つまり、タイムスタンプを指定し、呼び出し時にそのタイムスタンプを返す ObjectId を取得しますgetTimestamp
)。
これを行う方法はありますか?
Mongo シェルはこれを明示的にサポートしていないようです。しかし、いくつかのタイムゾーンのものは別として、これは機能します:
var timestamp = Math.floor(new Date(1974, 6, 25).getTime() / 1000);
var hex = ('00000000' + timestamp.toString(16)).substr(-8); // zero padding
var objectId = new ObjectId(hex + new ObjectId().str.substring(8));