C'est parce que collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
génère une nouvelle MongoCollection
objet avec un souci d'écriture différent que vous n'utilisez jamais :
Le code suivant :
MongoCollection<Document> dup = collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
...
dup.insertOne(doc);
devrait fonctionner, c'est-à-dire qu'aucune erreur n'a été générée.
Quant au MongoClient
problème d'écriture de niveau qui n'est pas propagé à la base :
public MongoDatabase getDatabase(final String databaseName) {
MongoClientOptions clientOptions = getMongoClientOptions();
return new MongoDatabaseImpl(databaseName, clientOptions.getCodecRegistry(), clientOptions.getReadPreference(),
clientOptions.getWriteConcern(), createOperationExecutor());
}
Comme vous pouvez le voir, le problème d'écriture provient de MongoClientOptions
en ignorant la valeur du paramètre transmise à mongoClient.setWriteConcern()
méthode, qui peut être un bogue.
Ainsi, pour définir correctement une préoccupation d'écriture globale, vous devrez créer une instance de MongoClientOptions
:
MongoClientOptions options = MongoClientOptions
.builder()
.writeConcern(WriteConcern.UNACKNOWLEDGED)
.build();
et transmettez-le au MongoClient
constructeur.