2014-03-04 2 views
0

나는 MongoDBJava-driver을 사용하고 있습니다.한 문서의 _id를 얻는 방법 MongoDB Java

MongoDB에 문서를 삽입하고이 문서의 _id를 검색해야합니다. insert 메서드는 [WriteResult][1]을 반환합니다.

나는이 작업을 수행하려고하기 때문에, 내가 _id를 검색 할 WriteResult 개체를 사용하는이 방법을 모르는 :

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에 널 String 있습니다.

내 질문은 내가 방금 데이터베이스에 삽입 된 전체 개체 (_id)를 얻을 수있는 방법입니다.

감사합니다.

+2

'WriteResult'는 * 상태 * 객체가 아닌 컬렉션에 삽입 된 항목의 복사본이며, 참고 'result.getField'는 더 이상 사용되지 않습니다. – chrylis

답변

3

BasicDBObject 인스턴스가 삽입 된 후 MongoDB 드라이버는 값을 _id 필드로 설정하는 조건으로 인스턴스를 수정합니다 (지정하지 않은 경우). 따라서

, 여전히 fact 객체를 사용하고 거기에서 _id를 얻을 수 있습니다 :

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

그렇다면 내 메서드는 올바른 _id를 사용하여 이전 개체를 갖기 위해 BasicDBObjec을 반환 할 수 있습니까 ?? – jjmartinez

+0

예, '사실'을 반환 할 수 있습니다. 물론, 메서드 서명을 public DBObject insertDocument (BasicDBObject fact)로 변경해야합니다. –

+0

마지막 질문. BasicDBObject를 "사실"개체에 매핑 할 수 있습니까? – jjmartinez

관련 문제