我正在使用mongodb 3.4,我想获取最后插入的文档ID。我搜索了所有,我发现下面的代码可以使用,如果我使用BasicDBObject。
BasicDBObject docs = new BasicDBObject(doc);
collection.insertOne(docs);
ID = (ObjectId)doc.get( "_id" );
但问题是我使用的是Document类型而不是BasicDBObject,所以我试图像这样使用doc.getObjectId();
。但是它询问了一个我真正想要的参数,那么有谁知道如何得到它?
修改
这是我将它插入mongo db。
Document doc = new Document("jarFileName", jarDataObj.getJarFileName())
.append("directory", jarDataObj.getPathData())
.append("version", jarDataObj.getVersion())
.append("artifactID", jarDataObj.getArtifactId())
.append("groupID", jarDataObj.getGroupId());
如果我使用doc.toJson()
,它会显示整个文件。有没有办法只提取_id?
这只给了我想要的值,比如 objectkey ,所以我可以用它作为参考键。
collection.insertOne(doc);
jarID = doc.get( "_id" );
System.out.println(jarID); //59a4db1a6812d7430c3ef2a5
答案 0 :(得分:1)
基于ObjectId
Javadoc,您只需从24字节的十六进制字符串中实例化一个ObjectId
,如果您使用59a4db1a6812d7430c3ef2a5
,那就是UTF-8
编码。为什么不做new ObjectId("59a4db1a6812d7430c3ef2a5")
或new ObjectId("59a4db1a6812d7430c3ef2a5".getBytes(StandardCharsets.UTF_8))
?尽管如此,我还是说将ObjectId
暴露在与Mongo集成的层之外是一个设计缺陷。