对象id中的否定进程ID

时间:2017-03-27 07:51:03

标签: mongodb objectid mongo-java-driver

使用java驱动程序将一些记录添加到集合中,它将自动为每个记录生成对象ID。在我的数据库中,它由MongoDB生成下面的Object Id:

ObjectId("58b38cd57decdd8070b2df8f")

然后我对当前对象id进行测试:

import org.bson.types.ObjectId;
public class Test {
    public static void main(String[] args)
    { 
        // TODO Auto-generated method stub String 
        idStr = "58b38cd57decdd8070b2df8f"; 
        ObjectId id = new ObjectId(idStr);
        System.out.println(id.getProcessIdentifier()); 
    }
}

java下面的打印结果没有错误: -32656

进程标识符是对象标识结构中的负数。 我不确定它是java驱动程序错误还是核心服务器错误。

在我的项目中,我需要将对象id发布到JSP文件,并通过发布的对象结构生成对象id。因为无效的进程标识符,JS函数生成的对象id将包含en dash。它是一个无效的对象ID。

对象结构发布到JSP文件:

counter:11722639
date:1488162005000
machineIdentifier:8252637
processIdentifier:-32656
time:1488162005000
timeSecond:1488162005
timestamp:1488162005

对象结构生成的新对象id:

58b38cd57decdd-7f90b2df8f

JS函数按对象结构生成对象id:

function parseObjectId(objectId){
var timestamp = objectId.timestamp;
var machineIdentifier = objectId.machineIdentifier;
var processIdentifier = objectId.processIdentifier;
var counter = objectId.counter;
return toFixedLengthHex(timestamp,8) + toFixedLengthHex(machineIdentifier,6) + toFixedLengthHex(processIdentifier,4) + toFixedLengthHex(counter,6);

}

mongodb版本:3.4.1 BSON版本:3.2.1 蒙戈-java的驱动程序:3.2.2

0 个答案:

没有答案