Jeg havde det indtryk, at dette var den normale MongoDB-adfærd og intet har at gøre med Java-driveren.
Det eneste jeg kan finde i dokumentationen er dette :
En insert
er hverken en update
heller ikke en remove
, n
synes ikke at være specificeret, og 0 er en lige så god standardværdi som nogen. Du kan nemt nok tjekke det i mongo-skallen:
> db.test.insert({_id: 'test'})
> db.getLastErrorObj()
{ "n" : 0, "connectionId" : 7, "err" : null, "ok" : 1 }
Medmindre jeg tager fejl, er det egentlig ikke et problem:Spørg dig selv, under hvilke omstændigheder indsatsen ville fejle (bortset fra f.eks. en forbindelsesfejl). Den eneste, jeg kan komme i tanke om, er en overtrædelse af unicity-begrænsningen, som ville resultere i en undtagelse. Så næsten per definition, det faktum, at du modtager et WriteResult
instans betyder overhovedet, at handlingen var vellykket, og et dokument blev indsat.
Et par bemærkninger:
- mit tidligere argument afhænger af din
WriteConcern
høj nok til, at fejl rapporteres. Hvis du brugerWriteConcern.NONE
f.eks. vil der aldrig blive rejst nogen undtagelse. - hvis antallet af opdaterede dokumenter er et absolut must for dig, kan du altid bruge
save
i stedet forinsert
. Ikke særlig ren, men den opfører sig, som du ser ud til at forvente.