To proto, že collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
vygeneruje novou MongoCollection
objekt s jinou starostí o zápis, který nikdy nepoužíváte:
Následující kód:
MongoCollection<Document> dup = collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
...
dup.insertOne(doc);
by mělo fungovat, tj. žádná chyba.
Pokud jde o MongoClient
obava o zápis úrovně, která se nešíří do databáze:
public MongoDatabase getDatabase(final String databaseName) {
MongoClientOptions clientOptions = getMongoClientOptions();
return new MongoDatabaseImpl(databaseName, clientOptions.getCodecRegistry(), clientOptions.getReadPreference(),
clientOptions.getWriteConcern(), createOperationExecutor());
}
Jak vidíte, problém se zápisem je převzat z MongoClientOptions
ignorování hodnoty parametru předané do mongoClient.setWriteConcern()
metoda, což může být chyba.
Chcete-li tedy správně nastavit globální problém zápisu, budete muset vytvořit instanci MongoClientOptions
:
MongoClientOptions options = MongoClientOptions
.builder()
.writeConcern(WriteConcern.UNACKNOWLEDGED)
.build();
a předejte jej MongoClient
konstruktor.