Fiquei com a impressão de que esse era o comportamento normal do MongoDB e não tem nada a ver com o driver Java.
A única coisa que posso encontrar na documentação é isto :
Um
insert
não sendo uma update
nem um remove
, n
não parece ser especificado e 0 é um valor padrão tão bom quanto qualquer outro. Você pode verificá-lo facilmente no shell do mongo:> db.test.insert({_id: 'test'})
> db.getLastErrorObj()
{ "n" : 0, "connectionId" : 7, "err" : null, "ok" : 1 }
A menos que eu esteja enganado, não é realmente um problema:pergunte a si mesmo em quais circunstâncias a inserção falharia (além de, digamos, uma falha de conexão). A única em que consigo pensar é uma violação de restrição de unicidade, o que resultaria em uma exceção. Então, quase por definição, o fato de você receber um
WriteResult
instância significa que a operação foi bem-sucedida e um documento foi inserido. Algumas notas:
- meu argumento anterior depende do seu
WriteConcern
sendo alto o suficiente para que os erros sejam relatados. Se você estiver usandoWriteConcern.NONE
, por exemplo, nenhuma exceção será gerada. - se o número de documentos atualizados for uma necessidade absoluta para você, você sempre pode usar
save
em vez deinsert
. Não é muito limpo, mas se comporta da maneira que você espera.