2011-10-20 6 views
5

Pensée le WriteResult.getLastError() devrait retourner null, si l'opération de suppression
a réussi.MongoDB: Que getLastError() renvoie

Il retourne cette

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

Le BatchDataDocument a été supprimé avec succès, mais getLastError() n'est pas null.

Comment dois-je écrire le code pour savoir si la suppression a échoué, dans l'extrait suivant:

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"); 
} 

Répondre

5

La commande getLastError() fait la bonne chose. Il vous indique que l'action a réussi (ok:1.0) et qu'aucune erreur ne s'est produite ("err":null).

Pour plus de détails, consultez le recently updated docs.

getLastError() dispose également de certaines fonctionnalités liées à la journalisation et à la réplication que vous souhaitez étudier.


Edit:

En réponse au premier commentaire:

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

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

qui fait sens bien sûr. Comment puis-je reconstruire mon code pour piéger le ("err": null) – Erik

+0

Je ne vois aucune documentation concernant les informations renvoyées par getLastError dans ce lien. – UpTheCreek

+1

Ce poste a reçu une réponse il y a presque 2 ans. Donc "nouveau" était relatif, les docs ont été complètement revampés depuis lors. Aller à la nouvelle docs et en tapant 'getLastError' dans la barre de recherche a fourni ce lien: http://docs.mongodb.org/manual/reference/command/getLastError/ –

Questions connexes