如何获取一个文档MongoDB Java的_id

如何获取一个文档MongoDB Java的_id,java,mongodb,Java,Mongodb,我正在使用MongoDB和Java驱动程序 我需要在MongoDB中插入一个文档并检索此文档的_id。insert方法返回一个[WriteResult][1] 我不知道如何使用WriteResult对象检索_id,因为我尝试这样做: public void insertDocument(BasicDBObject fact){ DBCollection coll = this.getCollection("facts"); WriteResult result = coll.in

我正在使用
MongoDB
Java驱动程序

我需要在MongoDB中插入一个文档并检索此文档的_id。
insert
方法返回一个
[WriteResult][1]

我不知道如何使用WriteResult对象检索_id,因为我尝试这样做:

public void insertDocument(BasicDBObject fact){
    DBCollection coll = this.getCollection("facts");
    WriteResult result = coll.insert(fact);
    String id = (String) result.getField("_id");
    System.out.println("--------------------------->"+id);

}
我在
println
中有一个空
字符串

我的问题是如何获得刚刚插入数据库的整个对象(带有_id)


谢谢

插入
BasicDBObject
实例后,MongoDB驱动程序会修改实例,将值设置为
\u id
字段(如果您没有指定)

因此,您仍然可以使用
事实
对象并从中获取
\u id

 System.out.println(fact.get("_id"));

插入
BasicDBObject
实例后,MongoDB驱动程序会修改实例,将值设置为
\u id
字段(如果您没有指定)

因此,您仍然可以使用
事实
对象并从中获取
\u id

 System.out.println(fact.get("_id"));

WriteResult
是状态对象,不是插入集合的项的副本,请注意
result.getField
已弃用。
WriteResult
是状态对象,不是插入集合的项的副本,请注意
result.getField
已弃用。然后,我的方法能否返回BasicDBObjec以使我的旧对象具有正确的_id?是的,您可以返回
事实
。当然,您必须将方法签名更改为
public DBObject insertDocument(BasicDBObject事实)
我的最后一个问题。我能把一个基本对象映射到一个“事实”对象吗?嗯……事实对象是什么?也许你可以,但是你最好创建另一个线程并在那里提问。让更多的人知道:)对不起,这是我代码的一个对象。我想做一些事情,比如通过一个JSON字符串将一个BasicDBObject解析到我的Fact object然后,我的方法是否可以返回BasicDBObject以使我的旧对象具有正确的_id?是的,您可以返回
事实
。当然,您必须将方法签名更改为
public DBObject insertDocument(BasicDBObject事实)
我的最后一个问题。我能把一个基本对象映射到一个“事实”对象吗?嗯……事实对象是什么?也许你可以,但是你最好创建另一个线程并在那里提问。让更多的人知道:)对不起,这是我代码的一个对象。我想做一些事情,比如通过JSON字符串解析BasicDBObject到我的事实对象