Avevo l'impressione che questo fosse il normale comportamento di MongoDB e non avesse nulla a che fare con il driver Java.
L'unica cosa che posso trovare nella documentazione è questo :
Un insert
non essendo né un update
né una remove
, n
non sembra essere specificato e 0 è un valore predefinito buono come qualsiasi. Puoi controllarlo abbastanza facilmente nella mongo shell:
> db.test.insert({_id: 'test'})
> db.getLastErrorObj()
{ "n" : 0, "connectionId" : 7, "err" : null, "ok" : 1 }
A meno che non mi sbagli, non è davvero un problema:chiediti in quali circostanze l'inserto fallirebbe (a parte, diciamo, un errore di connessione). L'unico che mi viene in mente è una violazione del vincolo di unicità, che comporterebbe un'eccezione. Quindi, quasi per definizione, il fatto che tu riceva un WriteResult
istanza significa che l'operazione è andata a buon fine ed è stato inserito un documento.
Un paio di note:
- il mio precedente argomento dipende dal tuo
WriteConcern
essere sufficientemente alto da segnalare gli errori. Se stai usandoWriteConcern.NONE
, ad esempio, non verrà mai sollevata alcuna eccezione. - se il numero di documenti aggiornati è per te un must assoluto, puoi sempre utilizzare
save
invece diinsert
. Non molto pulito, ma si comporta come ti aspetteresti.