2011-10-20 17 views
5

pensó que el WriteResult.getLastError() debería devolver null, si la operación de borrado de
tuvo éxito.MongoDB: ¿Qué hace getLastError() devuelven

Devuelve este

{ "n" : 1 , "connectionId" : 200 , "wtime" : 0 , "err" : null , "ok" : 1.0} 

El BatchDataDocument ha sido eliminada con éxito, pero no es getLastError()null.

¿Cómo debería escribir el código para saber, si el borrado tuvo éxito, en el siguiente fragmento:

try { 
    Query<BatchData> queryDeleteBatchData = mongo.createQuery(BatchData.class); 
    queryDeleteBatchData.field("uuid").equal(theBatch.uuid);  
    queryDeleteBatchData.field("senderUuid").equal(on.uuid); 

    WriteResult del = mongo.delete(queryDeleteBatchData); 

    if(del.getLastError() != null){  
    logger.error("ERROR"); 
    } 

} catch (Exception e) { 
    logger.error("ERROR"); 
} 

Respuesta

5

El comando getLastError() está haciendo lo correcto. Le indica que la acción fue exitosa (ok:1.0) y que no se produjo ningún error ("err":null).

Para obtener más información, consulte recently updated docs.

getLastError() también tiene algunas funciones relacionadas con el diario y la replicación que es posible que desee investigar.


Editar:

En respuesta al primer comentario:

... 
    if(del.getLastError().ok != 1.0){  
    logger.error("ERROR"); 
    } 

} catch (Exception e) { 
    logger.error("ERROR"); 
} 
+0

que tiene sentido, por supuesto. ¿Cómo puedo reconstruir mi código para atrapar el ("err": null) – Erik

+0

No veo ninguna documentación con respecto a la información devuelta por getLastError en ese enlace. – UpTheCreek

+1

Esta publicación fue respondida hace casi 2 años. Entonces, "nuevo" fue relativo, los documentos se han renovado por completo desde entonces. Ir a los nuevos documentos y escribir 'getLastError' en la barra de búsqueda proporcionó este enlace: http://docs.mongodb.org/manual/reference/command/getLastError/ –

Cuestiones relacionadas