これは、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
に渡します コンストラクター。