Ik had de indruk dat dit het normale MongoDB-gedrag was en niets te maken had met het Java-stuurprogramma.
Het enige dat ik in de documentatie kan vinden is dit :
Een insert
geen update
zijn noch een remove
, n
lijkt niet te zijn opgegeven en 0 is een even goede standaardwaarde als elke andere. Je kunt het gemakkelijk genoeg controleren in de mongo-schaal:
> db.test.insert({_id: 'test'})
> db.getLastErrorObj()
{ "n" : 0, "connectionId" : 7, "err" : null, "ok" : 1 }
Tenzij ik me vergis, is het niet echt een probleem:vraag jezelf af onder welke omstandigheden de insert zou mislukken (behalve bijvoorbeeld een verbindingsfout). De enige die ik kan bedenken is een schending van de uniciteitsbeperking, wat zou resulteren in een uitzondering. Dus bijna per definitie, het feit dat u een WriteResult
. ontvangt instantie betekent helemaal dat de bewerking is geslaagd en dat er een document is ingevoegd.
Een paar opmerkingen:
- mijn vorige argument hangt af van uw
WriteConcern
hoog genoeg zijn om fouten te melden. Als uWriteConcern.NONE
. gebruikt , er zal bijvoorbeeld nooit een uitzondering worden gemaakt. - als het aantal bijgewerkte documenten voor u een absolute must is, kunt u altijd
save
gebruiken in plaats vaninsert
. Niet erg schoon, maar het gedraagt zich zoals je lijkt te verwachten.