MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

WriteConcern del client java MongoDB non funziona

Questo perché collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED); genera una nuova MongoCollection oggetto con un problema di scrittura diverso che non usi mai:

Il seguente codice:

MongoCollection<Document> dup = collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED);
...
dup.insertOne(doc);

dovrebbe funzionare, cioè nessun errore generato.

Per quanto riguarda il MongoClient problema di scrittura di livello che non viene propagato al database:

public MongoDatabase getDatabase(final String databaseName) {
    MongoClientOptions clientOptions = getMongoClientOptions();
    return new MongoDatabaseImpl(databaseName, clientOptions.getCodecRegistry(), clientOptions.getReadPreference(),
            clientOptions.getWriteConcern(), createOperationExecutor());
}

Come puoi vedere, il problema di scrittura è preso da MongoClientOptions ignorando il valore del parametro passato a mongoClient.setWriteConcern() metodo, che potrebbe essere un bug.

Quindi, per impostare correttamente un problema di scrittura globale, dovrai creare un'istanza di MongoClientOptions :

 MongoClientOptions options = MongoClientOptions
     .builder()
     .writeConcern(WriteConcern.UNACKNOWLEDGED)
     .build();

e passalo a MongoClient costruttore.