Това е така, защото collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
генерира нова MongoCollection
обект с различна грижа за запис, която никога не използвате:
Следният код:
MongoCollection<Document> dup = collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
...
dup.insertOne(doc);
трябва да работи, т.е. не възниква грешка.
Що се отнася до MongoClient
проблем за запис на ниво, който не се разпространява в базата данни:
public MongoDatabase getDatabase(final String databaseName) {
MongoClientOptions clientOptions = getMongoClientOptions();
return new MongoDatabaseImpl(databaseName, clientOptions.getCodecRegistry(), clientOptions.getReadPreference(),
clientOptions.getWriteConcern(), createOperationExecutor());
}
Както можете да видите, въпросът за запис е взет от MongoClientOptions
игнориране на стойността на параметъра, предадена на mongoClient.setWriteConcern()
метод, който може да е грешка.
Така че, за да зададете правилно проблем за глобално писане, ще трябва да създадете екземпляр на MongoClientOptions
:
MongoClientOptions options = MongoClientOptions
.builder()
.writeConcern(WriteConcern.UNACKNOWLEDGED)
.build();
и го предайте на MongoClient
конструктор.