如何从mongo shell中的Date值创建ObjectId?

时间:2013-07-14 17:58:04

标签: javascript mongodb mongo-shell

我想在mongo shell中创建一个新的ObjectId但是在过去的Date中创建一个新的ObjectId,以便在过去模拟该文档的创建。这与ObjectId的getTimestamp()函数相反(即给出一个时间戳,获取一个ObjectId,在其上调用getTimestamp时返回该时间戳)

任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:6)

Mongo shell似乎没有明确支持这一点。但除了一些时区之外,这还有效:

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