2013-08-29 96 views
0

我使用的是java蒙戈驅動程序時感到有點困惑WriteConcern,寫結果,並且GetLastError。不WriteConcern.SAFE導致DBCollection.remove()拋出故障時的異常?

我明白什麼不同WriteConcerns意味着在WriteConcern.SAFE導致寫操作阻塞,直到司機從MongoDB服務器接收確認。我也很困惑,當寫作出現問題時會發生什麼。

例如

DBCollection collectionHandle = ... 
DBObject criteria = ... 
WriteResult result = collectionHandle.remove(criteria, WriteConcern.SAFE) 

如果寫操作失敗,我該如何檢測故障? 是否駕駛員「remove'call拋出一個異常? 是否需要檢查WriteResult? 如果檢查寫結果一個會叫getError或GetLastError函數?

感謝,

彌敦道

回答

1

如果寫操作失敗,我該如何檢測故障?司機的'remove'呼叫是否會引發異常?

是的,你說得對。如果您正在使用WriteConcern.SAFE(及以上),驅動程序在內部檢查GetLastError函數,如果結果文檔包含ERR拋出異常。所以在這種情況下,你不必檢查WriteResult。基於字符串的寫入問題(如「多數」)也是如此。

對於「低」WriteConcern(正常或無)驅動程序只是返回WriteResult並不會引發異常。您將不得不手動檢查它的錯誤屬性。如果一切順利,則爲空,否則發生錯誤。