sql >> Database >  >> NoSQL >> MongoDB

WriteConcern van MongoDB Java-client werkt niet

Dat komt omdat collection.withWriteConcern(WriteConcern.UNACKNOWLEDGED); genereert een nieuwe MongoCollection object met een ander schrijfprobleem dat u nooit gebruikt:

De volgende code:

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

zou moeten werken, d.w.z. er is geen fout opgetreden.

Wat betreft de MongoClient schrijfprobleem op niveau dat niet wordt doorgegeven aan de database:

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

Zoals je kunt zien, is het schrijfprobleem overgenomen van MongoClientOptions negeren van de parameterwaarde die is doorgegeven aan mongoClient.setWriteConcern() methode, wat een bug kan zijn.

Dus om een ​​algemeen schrijfprobleem correct in te stellen, moet u een instantie van MongoClientOptions maken :

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

en geef het door aan de MongoClient constructeur.



  1. Query's met mangoest en dadels

  2. mongodb.conf bind_ip =127.0.0.1 werkt niet maar 0.0.0.0 werkt

  3. MongoDB:problemen met het gebruik van $concat om de waarde van een veld bij te werken

  4. Kan Robomongo niet verbinden met MongoDB docker-image