Изменение базы данных mongo

Я хочу запросить коллекцию в моем наборе реплик, используя собственный драйвер mongodb 2.0 для узла. Я могу подключиться к базе данных admin и пройти ее аутентификацию, но как переключить базы данных для запроса интересующей меня коллекции?

var mongodb  = require('mongodb');
var MongoClient = mongodb.MongoClient;

var url = "mongodb://user:pass@db1,db2,db3/admin";

MongoClient.connect(url, function(err, db) {

    console.log("Connected correctly to server");
    console.log("Current database", db.databaseName);

    // switch context to database foo
    // foo.bar.findOne();

    db.close();

});

person Chris Seymour    schedule 08.05.2015    source источник
comment
Вы можете получить разные базы данных следующим образом: var mongoclient = new MongoClient(.....); var admin = mongoclient.db('admin'); var products = mongoclient.db('products'); ....   -  person Hakan Özler    schedule 08.05.2015


Ответы (1)


Из драйвера MongoDB 2.0.0 docs

Косвенно с другой базой данных

В некоторых случаях вам может потребоваться аутентификация в базе данных, отличной от той, к которой вы собираетесь подключиться. Это называется делегированной аутентификацией. Допустим, вы хотите подключиться к базе данных foo, но пользователь определен в базе данных администратора. Давайте посмотрим, как мы этого добьемся.

var mongodb  = require('mongodb');
var MongoClient = mongodb.MongoClient;

var url = "mongodb://user:pass@db1,db2,db3/foo?authSource=admin";

MongoClient.connect(url, function(err, db) {

    console.log("Connected correctly to server");
    console.log("Current database", db.databaseName);

    //db==foo

    db.close();

});
person thegreenogre    schedule 08.05.2015
comment
отлично, спасибо! Не удалось найти то, на что вы ссылались, поэтому я рад наткнуться на ваш ответ - отлично! - person scniro; 17.05.2016