2012-06-05 3 views
5

java와 MongoDB에서 mongo-jackson-wrapper를 사용하고 있습니다. _id 필드가 아닌 내 필드를 쿼리하여 개체를 찾은 다음여부에 상관없이 _id 필드 값을 알고 업데이트 또는 삽입을 수행해야합니다. 그러나 예외가 발생합니다 :mongodb upsert java : 기존 객체의 _id를 가져 오는 방법은 무엇입니까?

com.mongodb.MongoException: No objects to return 
    at net.vz.mongodb.jackson.WriteResult.getSavedId(WriteResult.java:97) 

예외는 MongoDB 드라이버 자체가 아니라 래퍼에서 발생합니다.

WriteResult<EntityDocument, String> wr 
    = coll.update(DBQuery.is("corefEntityId", corefEntityId), up, true, false); 

이 작업을 수행하는 올바른 방법은 무엇입니까?

답변

0

당신은 findAndModify를 사용할 필요가 참

에 returnNew을 설정 당신은 JavaDoc

이 코드는 트릭을해야 볼 수 있지만 나는 그것을 테스트하지 않았습니다.

coll.findAndModify(DBQuery.is("corefEntityId", corefEntityId), null, null, false, up, true, false);

관련 문제