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.