2011-10-20 38 views
5

Nghĩ rằng WriteResult.getLastError() phải trả lại null, nếu thao tác xóa
thành công.MongoDB: getLastError() trả về gì

Nó trả về này

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

Các BatchDataDocument được xóa thành công, nhưng không phải là getLastError()null.

Làm thế nào tôi nên viết mã để biết, nếu xóa không thành công, trong đoạn mã sau:

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

Trả lời

5

Lệnh getLastError() đang làm điều đúng. Nó cho bạn biết rằng hành động đã thành công (ok:1.0) và không xảy ra lỗi ("err":null).

Để biết thêm chi tiết, hãy xem recently updated docs.

getLastError() cũng có một số chức năng liên quan đến việc ghi nhật ký và nhân rộng mà bạn có thể muốn điều tra.


Edit:

Để đối phó với những nhận xét đầu tiên:

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

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

có ý nghĩa của khóa học. Làm thế nào tôi có thể xây dựng lại mã của tôi để bẫy ("err": null) – Erik

+0

Tôi không thấy bất kỳ tài liệu nào liên quan đến thông tin được trả về bởi getLastError trong liên kết đó. – UpTheCreek

+1

Bài đăng này được trả lời gần 2 năm trước. Vì vậy, "mới" là tương đối, các tài liệu đã được hoàn toàn lại vamped kể từ đó. Chuyển đến các tài liệu mới và nhập 'getLastError' vào thanh tìm kiếm được cung cấp liên kết này: http://docs.mongodb.org/manual/reference/command/getLastError/ –

Các vấn đề liên quan