MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mungo mit ReplicaSet auf Atlas

AUF MONGODB 3.4.x

Ich habe dieses Problem gelöst, indem ich den Wert „options“ direkt in die Zeichenfolge „uri“ eingefügt habe, gemäß der Dokumentation (http://mongoosejs.com/docs/connections.html ) im Abschnitt "Replikatsatzverbindungen".

// connection string using mongoose:
var uri = 'mongodb://MY_USER:[email protected]' +
  'MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,' +
  'MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,' +
  'MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE' +
  'ssl=true&replicaSet=MY_REPLICASET_NAME-shard-0&authSource=MY_ADMIN_DATABASE';

mongoose.connect(uri);
var db = mongoose.connection;

Jetzt funktioniert es einwandfrei!

HINWEIS ZU MONGODB 3.6

Bei MongoDB Atlas mit Version 3.6.x wurde die Verbindungszeichenfolge geändert, um einen DNS-Server zu verwenden, wodurch der Link kürzer wird.

...wenn Sie diese Verbindungszeichenfolge in Ihrer Anwendung verwenden, wird diese erfolgreich verbunden, aber sie kann nur mit Atlas-Benutzern mit höheren Zugriffsrechten (atlasAdmin, readWriteAnyDatabase...) lesen und schreiben.

Um mit einem bestimmten Benutzer zu arbeiten, der nur die Berechtigung zum Lesen/Schreiben Ihrer Datenbank hat, müssen Sie dieselbe Verbindungszeichenfolge beibehalten, die in MongoDB 3.4 verwendet wird, da der Mungo die DNS-Option (mongodb+srv) nicht erkannt hat.

P.S. Alle neuen Ressourcen von MongoDB 3.6.x funktionieren weiterhin normal!