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

mongodb、複製とエラー:{$ err:マスターではなくslaveOk =false、コード:13435}

    セカンダリからの読み取りを許可していることをmongoシェルに通知するには、「セカンダリOK」モードを設定する必要があります。これは、偶然に結果整合性のある読み取りを実行することからユーザーとアプリケーションを保護するためです。これは、シェルで次のように実行できます:

    rs.secondaryOk()
    

    その後、セカンダリから通常どおりクエリを実行できます。

    「結果整合性」に関する注意:通常の状況では、レプリカセットのセカンダリは、1秒以内にプライマリとすべて同じデータを持ちます。非常に高い負荷がかかると、プライマリに書き込んだデータがセカンダリに複製されるまでに時間がかかる場合があります。これは「レプリカラグ」と呼ばれ、遅れているセカンダリからの読み取りは「結果整合性」読み取りと呼ばれます。これは、新しく書き込まれたデータはある時点で表示されますが(ネットワーク障害などを除く)、表示されない場合があるためです。すぐに利用できます。

    編集: 設定する必要があるのはsecondaryOkだけです セカンダリからクエリを実行する場合、セッションごとに1回のみ。



    1. mongodbのc++ドライバーを使用してプログラムを作成するにはどうすればよいですか?

    2. $lookupMongodbのLocalFieldで文字列をobjectIdに変換する方法

    3. MongodbfindAndModifyノードjs

    4. ObjectIdをmongodbアグリゲートの文字列値に$projectする方法は?