Isso porque
collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
gera um novo MongoCollection
objeto com uma preocupação de gravação diferente que você nunca usa:O seguinte código:
MongoCollection<Document> dup = collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
...
dup.insertOne(doc);
deve funcionar, ou seja, nenhum erro gerado.
Quanto ao
MongoClient
preocupação de gravação de nível que não é propagada para o banco de dados:public MongoDatabase getDatabase(final String databaseName) {
MongoClientOptions clientOptions = getMongoClientOptions();
return new MongoDatabaseImpl(databaseName, clientOptions.getCodecRegistry(), clientOptions.getReadPreference(),
clientOptions.getWriteConcern(), createOperationExecutor());
}
Como você pode ver, o problema de gravação é retirado de
MongoClientOptions
ignorando o valor do parâmetro passado para mongoClient.setWriteConcern()
método, o que pode ser um bug. Portanto, para definir uma preocupação de gravação global corretamente, você precisará criar uma instância de
MongoClientOptions
: MongoClientOptions options = MongoClientOptions
.builder()
.writeConcern(WriteConcern.UNACKNOWLEDGED)
.build();
e passe para o
MongoClient
construtor.