2014-03-04 37 views
0

我正在使用MongoDBJava-driver如何獲取一個文檔的_id MongoDB Java

我需要將文檔插入到MongoDB中,並檢索此文檔的_id。 insert方法返回[WriteResult][1]

我不知道我怎麼也得使用寫結果對象檢索_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); 

} 

而且我在printlnString

我的問題是我如何獲得我剛剛插入到數據庫中的整個對象(帶有_id)。

謝謝!

+2

'WriteResult'是*狀態*對象,而不是插入到集合中的項目的副本,並注意'result.getField'已棄用。 – chrylis

回答

3

在插入BasicDBObject實例之後,MongoDB驅動程序根據設置值將該實例修改爲_id字段(如果尚未指定)。

因此,你仍然可以使用fact對象並獲取_id從那裏:

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

然後,我的方法是否可以返回BasicDBObjec以使我的舊對象具有正確的_id? – jjmartinez

+0

是的,你可以返回'事實'。當然,您必須將方法簽名更改爲'public DBObject insertDocument(BasicDBObject fact)' –

+0

我的最後一個問題。我可以將BasicDBObject映射到「事實」對象嗎? – jjmartinez

相關問題