Questo perché collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
genera una nuova MongoCollection
oggetto con un problema di scrittura diverso che non usi mai:
Il seguente codice:
MongoCollection<Document> dup = collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
...
dup.insertOne(doc);
dovrebbe funzionare, cioè nessun errore generato.
Per quanto riguarda il MongoClient
problema di scrittura di livello che non viene propagato al database:
public MongoDatabase getDatabase(final String databaseName) {
MongoClientOptions clientOptions = getMongoClientOptions();
return new MongoDatabaseImpl(databaseName, clientOptions.getCodecRegistry(), clientOptions.getReadPreference(),
clientOptions.getWriteConcern(), createOperationExecutor());
}
Come puoi vedere, il problema di scrittura è preso da MongoClientOptions
ignorando il valore del parametro passato a mongoClient.setWriteConcern()
metodo, che potrebbe essere un bug.
Quindi, per impostare correttamente un problema di scrittura globale, dovrai creare un'istanza di MongoClientOptions
:
MongoClientOptions options = MongoClientOptions
.builder()
.writeConcern(WriteConcern.UNACKNOWLEDGED)
.build();
e passalo a MongoClient
costruttore.