Itu karena collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
menghasilkan MongoCollection
baru objek dengan masalah penulisan berbeda yang tidak pernah Anda gunakan:
Kode berikut:
MongoCollection<Document> dup = collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
...
dup.insertOne(doc);
seharusnya berfungsi, artinya tidak ada kesalahan yang muncul.
Adapun MongoClient
tingkat kekhawatiran tulis yang tidak disebarkan ke database:
public MongoDatabase getDatabase(final String databaseName) {
MongoClientOptions clientOptions = getMongoClientOptions();
return new MongoDatabaseImpl(databaseName, clientOptions.getCodecRegistry(), clientOptions.getReadPreference(),
clientOptions.getWriteConcern(), createOperationExecutor());
}
Seperti yang Anda lihat, masalah penulisan diambil dari MongoClientOptions
mengabaikan nilai parameter yang diteruskan ke mongoClient.setWriteConcern()
metode, yang mungkin merupakan bug.
Jadi, untuk mengatur masalah penulisan global dengan benar, Anda harus membuat instance MongoClientOptions
:
MongoClientOptions options = MongoClientOptions
.builder()
.writeConcern(WriteConcern.UNACKNOWLEDGED)
.build();
dan berikan ke MongoClient
konstruktor.