Останах с впечатлението, че това е нормалното поведение на MongoDB и няма нищо общо с Java драйвера.
Единственото нещо, което мога да намеря в документацията, е това :
insert не е нито update нито remove , n не изглежда да е посочено и 0 е толкова добра стойност по подразбиране, колкото всяка друга. Можете да го проверите достатъчно лесно в mongo shell:
> db.test.insert({_id: 'test'})
> db.getLastErrorObj()
{ "n" : 0, "connectionId" : 7, "err" : null, "ok" : 1 }
Освен ако не греша, това всъщност не е проблем:запитайте се при какви обстоятелства вмъкването ще се провали (освен, да речем, повреда на връзката). Единственото, за което се сещам, е нарушение на ограничението за уникалност, което би довело до изключение. Така че почти по дефиниция, фактът, че получавате WriteResult instance изобщо означава, че операцията е била успешна и документът е бил вмъкнат.
Няколко бележки:
- предишният ми аргумент зависи от вашето
WriteConcernе достатъчно висока, за да се докладват грешки. Ако използватеWriteConcern.NONE, например, никога няма да бъде повдигнато изключение. - ако броят на актуализираните документи е абсолютно задължителен за вас, винаги можете да използвате
saveвместоinsert. Не е много чист, но се държи така, както изглежда очаквате.