2012-06-05 13 views
5

Estoy usando el mongo-jackson-wrapper con java y MongoDB. Encuentro un objeto al consultar un campo mío (no el campo _id), y luego necesito saber el valor del campo _id, ya sea el resultado neto fue una actualización o una inserción. Sin embargo, recibo una excepción:mongodb upsert from java: cómo obtener _id del objeto existente?

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

La excepción proviene del envoltorio, no del controlador MongoDB en sí.

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

¿Qué (si acaso) es la forma correcta de hacerlo?

Respuesta

0

Es necesario utilizar findAndModify y establecer returnNew a cierto

Puede ver el JavaDoc

Este código debe hacer el truco, pero yo no lo he probado.

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

Cuestiones relacionadas