使用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