Останах с впечатлението, че това е нормалното поведение на 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
. Не е много чист, но се държи така, както изглежда очаквате.