kai*_*ris 4 javascript mongodb node.js objectid
怎么样/我可以得到
3字节计数器,以随机值开始
部分来自mongodb ObjectId?
我有一个像这样的ObjectId:ObjectId("507f1f77bcf86cd799439011")
根据mongodb文档:
描述
ObjectId()返回一个新的ObjectId值.12字节的ObjectId值包括:
一个4字节的值,表示自Unix纪元以来的秒数,
一个3字节的机器标识符,
一个2字节的进程ID,
和一个3字节的计数器,以随机值开始.
我希望得到" 和一个3字节计数器,从一个随机值开始. "如果可能的话,从上面的ObjectId开始.
你可以尝试下面的技巧,你可以得到的等效字符串表示ObjectId使用toString()或toHexString(),使用parseInt和slice获得的部分.因为十六进制数字是一个字节的一半,所以偏移量是两倍:
db.collection("collectionName").findOne({}, function(err, result) {
if (result) {
var id = result._id.toString(), ctr = 0;
var timestamp = parseInt(id.slice(ctr, (ctr+=8)), 16);
var machineID = parseInt(id.slice(ctr, (ctr+=6)), 16);
var processID = parseInt(id.slice(ctr, (ctr+=4)), 16);
var counter = parseInt(id.slice(ctr, (ctr+=6)), 16);
console.log(id);
console.log(timestamp);
console.log(machineID);
console.log(processID);
console.log(counter);
}
});
Run Code Online (Sandbox Code Playgroud)