Měl jsem dojem, že to bylo normální chování MongoDB a nemá to nic společného s ovladačem Java.
Jediná věc, kterou mohu najít v dokumentaci, je toto :
insert
není ani update
ani remove
, n
Zdá se, že není zadán a 0 je stejně dobrá výchozí hodnota jako kterákoli jiná. Můžete to snadno zkontrolovat v mongo shell:
> db.test.insert({_id: 'test'})
> db.getLastErrorObj()
{ "n" : 0, "connectionId" : 7, "err" : null, "ok" : 1 }
Pokud se nemýlím, ve skutečnosti to není problém:zeptejte se sami sebe, za jakých okolností by vložka selhala (kromě, řekněme, selhání připojení). Jediné, co mě napadá, je porušení omezení jednoznačnosti, které by mělo za následek výjimku. Takže téměř z definice, skutečnost, že obdržíte WriteResult
instance vůbec znamená, že operace byla úspěšná a byl vložen dokument.
Pár poznámek:
- můj předchozí argument závisí na vašem
WriteConcern
je dostatečně vysoká, aby byly hlášeny chyby. Pokud používáteWriteConcern.NONE
, například nikdy nebude vznesena žádná výjimka. - Pokud je pro vás počet aktualizovaných dokumentů absolutní nutností, můžete vždy použít
save
místoinsert
. Není příliš čistý, ale chová se tak, jak se zdá, že očekáváte.