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.