sql >> Database >  >> NoSQL >> MongoDB

Mongoose leest niet uit secundaire Mongo-database

Probeer de volgende opties:

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"
    }
});

Terwijl de documentatie ping specificeert als de standaardstrategie lijkt het erop dat Mongoose vereist dat u er een opgeeft wanneer u readPreference gebruikt .

Houd er ook rekening mee dat secondaryPreferred is niet hetzelfde als nearest . secondaryPreferred geeft de voorkeur aan het lezen van secundaire leden (zoals de naam al doet vermoeden), ongeacht de netwerklatentie, waar nearest geeft prioriteit aan het lezen van het lid met de laagste hoeveelheid netwerklatentie.

Behalve een verkeerde configuratie in uw replicaset, moet u ervoor zorgen dat uw primaire online en bereikbaar is - standaard weigert Mongoose een secundaire te gebruiken als de primaire offline is.



  1. Hoe selecteer je een enkel veld voor alle documenten in een MongoDB-verzameling?

  2. Hoe kan ik slechts één database opslaan in Redis?

  3. MongoDB-equivalent van SQL COUNT GROUP BY

  4. Mongoose:Hoe een populatie van 2 niveaus te vullen zonder velden van het eerste niveau te vullen? in mongodb