sql >> データベース >  >> NoSQL >> MongoDB

MongoDBJavaクライアントのWriteConcernが機能しない

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



    1. ノードを使用してバイナリオブジェクトをredisに保存するにはどうすればよいですか?

    2. Mongodbスキーマの定義

    3. マングース埋め込みドキュメント/DocumentsArraysid

    4. Node.jsおよびSocket.IOでのRedisの使用