Ich hatte den Eindruck, dass dies das normale MongoDB-Verhalten ist und nichts mit dem Java-Treiber zu tun hat.
Das einzige, was ich in der Dokumentation finden kann, ist dies :
Ein insert
weder ein update
sein noch ein remove
, n
scheint nicht angegeben zu sein und 0 ist ein ebenso guter Standardwert wie jeder andere. Sie können es ganz einfach in der Mongo-Shell überprüfen:
> db.test.insert({_id: 'test'})
> db.getLastErrorObj()
{ "n" : 0, "connectionId" : 7, "err" : null, "ok" : 1 }
Wenn ich mich nicht irre, ist es kein wirkliches Problem:Fragen Sie sich, unter welchen Umständen das Einfügen fehlschlagen würde (anders als beispielsweise ein Verbindungsfehler). Die einzige, die mir einfällt, ist eine Verletzung der Eindeutigkeitsbeschränkung, die zu einer Ausnahme führen würde. Also fast per Definition die Tatsache, dass Sie ein WriteResult
erhalten Instanz bedeutet, dass der Vorgang erfolgreich war und ein Dokument eingefügt wurde.
Ein paar Anmerkungen:
- mein vorheriges Argument hängt von Ihrem
WriteConcern
ab hoch genug sein, dass Fehler gemeldet werden. Wenn SieWriteConcern.NONE
verwenden wird zum Beispiel niemals eine Ausnahme ausgelöst. - wenn die Anzahl der aktualisierten Dokumente für Sie ein absolutes Muss ist, können Sie jederzeit
save
verwenden stattinsert
. Nicht sehr sauber, aber es verhält sich wie erwartet.