Det er fordi collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED); genererer en ny MongoCollection objekt med en anden skrivebekymring, som du aldrig bruger:
Følgende kode:
MongoCollection<Document> dup = collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
...
dup.insertOne(doc);
burde virke, dvs. ingen fejl opstår.
Hvad angår MongoClient niveau skrive bekymring, som ikke udbredes til databasen:
public MongoDatabase getDatabase(final String databaseName) {
MongoClientOptions clientOptions = getMongoClientOptions();
return new MongoDatabaseImpl(databaseName, clientOptions.getCodecRegistry(), clientOptions.getReadPreference(),
clientOptions.getWriteConcern(), createOperationExecutor());
}
Som du kan se, er skriveproblemet taget fra MongoClientOptions ignorerer parameterværdien, der er sendt til mongoClient.setWriteConcern() metode, som kan være en fejl.
Så for at indstille et globalt skriveproblem korrekt, skal du oprette en forekomst af MongoClientOptions :
MongoClientOptions options = MongoClientOptions
.builder()
.writeConcern(WriteConcern.UNACKNOWLEDGED)
.build();
og send den til MongoClient konstruktør.