2011-10-20 15 views
5

Pomyślałem, że WriteResult.getLastError() powinien zwrócić null, jeśli operacja usunięcia zakończyła się pomyślnie.MongoDB: Co zwraca getLastError()?

Zwraca to

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

BatchDataDocument została usunięta pomyślnie, ale getLastError() nie jest null.

Jak należy napisać kod, aby wiedzieć, czy kasowania była nieudana, w następującym fragmencie:

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

Odpowiedz

5

Komenda getLastError() robi właściwą rzecz. Mówi ci, że akcja się powiodła (ok:1.0) i że nie wystąpił błąd ("err":null). Więcej informacji pod numerem recently updated docs.

getLastError() ma również pewne funkcje związane z kronikowaniem i replikacją, które możesz chcieć zbadać.


Edit:

W odpowiedzi na pierwszy komentarz:

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

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

że sens oczywiście. Jak mogę odbudować mój kod, aby uwięzić ("err": null) – Erik

+0

Nie widzę żadnej dokumentacji dotyczącej informacji zwróconych przez getLastError w tym linku. – UpTheCreek

+1

Ten post otrzymał odpowiedź prawie 2 lata temu. Więc "nowy" był względny, od tego czasu doktorzy zostali całkowicie ponownie wampirowani. Przechodząc do nowych dokumentów i wpisując 'getLastError' w pasku wyszukiwania pod warunkiem, że ten link: http://docs.mongodb.org/manual/reference/command/getLastError/ –

Powiązane problemy