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

MongooseがMongoセカンダリデータベースから読み取っていません

    次のオプションを使用してみてください:

    var mongoose = require("mongoose");
    var dbUrl = "mongodb://***.***.***.***:27017,***.***.***.***:27017,***.***.***.***:27017,***.***.***.***:27017,***.***.***.***:27017/exampleDb";
    
    mongoose.connect(dbUrl, {
        server: { 
            readPreference: "nearest", 
            strategy: "ping"
        },
        replset: { 
            rs_name: "exampleRepSet", 
            readPreference: "nearest", 
            strategy: "ping"
        }
    });
    

    ドキュメントではpingが指定されていますが デフォルトの戦略として、Mongooseは、readPreferenceを使用するときに指定することを義務付けているようです。 。

    secondaryPreferredにも注意してください nearestと同じものではありません 。 secondaryPreferred nearestネットワーク遅延に関係なく、(名前が示すように)セカンダリメンバーの読み取りを優先します ネットワーク遅延が最も少ないメンバーへの読み取りを優先します。

    レプリカセットの設定に誤りがない限り、プライマリがオンラインで到達可能であることを確認してください。デフォルトでは、プライマリがオフラインの場合、Mongooseはセカンダリの使用を拒否します。



    1. Nodejsパフォーマンスの最適化

    2. mongodbのネストされた配列ドキュメントのn番目のドキュメントを更新します

    3. Mongodb monogorestoreルートディレクトリは、単一のデータベースのダンプである必要があります

    4. 20Hadoop2.xとHadoop3.xの顕著な違い