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
WriteConcernhøj nok til, at fejl rapporteres. Hvis du brugerWriteConcern.NONEf.eks. vil der aldrig blive rejst nogen undtagelse. - hvis antallet af opdaterede dokumenter er et absolut must for dig, kan du altid bruge
savei stedet forinsert. Ikke særlig ren, men den opfører sig, som du ser ud til at forvente.