sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Java-klientens WriteConcern fungerar inte

Det beror på att collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED); genererar en ny MongoCollection objekt med ett annat skrivproblem som du aldrig använder:

Följande kod:

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

borde fungera, d.v.s. inget fel uppstod.

När det gäller MongoClient nivå skrivproblem som inte sprids till databasen:

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

Som du kan se är skrivproblemet hämtat från MongoClientOptions ignorerar parametervärdet som skickas till mongoClient.setWriteConcern() metod, som kan vara en bugg.

Så för att ställa in ett globalt skrivproblem på rätt sätt måste du skapa en instans av MongoClientOptions :

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

och skicka den till MongoClient konstruktör.



  1. Mongodb Query För att välja poster med en given nyckel

  2. Couchbase benchmark avslöjar mycket långsamma INSERTs och GETs (med hjälp av KeyValue-operationer); långsammare än kvarvarande MySQL-data

  3. MongoDB C#-drivrutin - Ignorera fält vid bindning

  4. Varför och när är det nödvändigt att bygga om index i MongoDB?