Jag fick intrycket att detta var det normala MongoDB-beteendet och inte har något att göra med Java-drivrutinen.
Det enda jag kan hitta i dokumentationen är detta :
En insert
är varken en update
inte heller en remove
, n
verkar inte specificeras och 0 är ett lika bra standardvärde som något annat. Du kan kontrollera det enkelt nog i mongoskalet:
> db.test.insert({_id: 'test'})
> db.getLastErrorObj()
{ "n" : 0, "connectionId" : 7, "err" : null, "ok" : 1 }
Om jag inte har fel är det egentligen inget problem:fråga dig själv under vilka omständigheter insättningen skulle misslyckas (annat än, säg, ett anslutningsfel). Det enda jag kan komma på är ett brott mot unicity-begränsningen, vilket skulle resultera i ett undantag. Så nästan per definition, det faktum att du får ett WriteResult
instans betyder överhuvudtaget att operationen lyckades och att ett dokument infogades.
Ett par anteckningar:
- mitt tidigare argument beror på din
WriteConcern
är tillräckligt hög för att fel rapporteras. Om du använderWriteConcern.NONE
, till exempel kommer inget undantag någonsin att tas upp. - om antalet uppdaterade dokument är ett absolut måste för dig kan du alltid använda
save
istället förinsert
. Inte särskilt rent, men det beter sig som du verkar förvänta dig.