Dat komt omdat collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
genereert een nieuwe MongoCollection
object met een ander schrijfprobleem dat u nooit gebruikt:
De volgende code:
MongoCollection<Document> dup = collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
...
dup.insertOne(doc);
zou moeten werken, d.w.z. er is geen fout opgetreden.
Wat betreft de MongoClient
schrijfprobleem op niveau dat niet wordt doorgegeven aan de database:
public MongoDatabase getDatabase(final String databaseName) {
MongoClientOptions clientOptions = getMongoClientOptions();
return new MongoDatabaseImpl(databaseName, clientOptions.getCodecRegistry(), clientOptions.getReadPreference(),
clientOptions.getWriteConcern(), createOperationExecutor());
}
Zoals je kunt zien, is het schrijfprobleem overgenomen van MongoClientOptions
negeren van de parameterwaarde die is doorgegeven aan mongoClient.setWriteConcern()
methode, wat een bug kan zijn.
Dus om een algemeen schrijfprobleem correct in te stellen, moet u een instantie van MongoClientOptions
maken :
MongoClientOptions options = MongoClientOptions
.builder()
.writeConcern(WriteConcern.UNACKNOWLEDGED)
.build();
en geef het door aan de MongoClient
constructeur.