【问题标题】:Changing mongo database更改 mongo 数据库
【发布时间】:2015-07-19 05:04:23
【问题描述】:

我想使用节点的本机 2.0 mongodb 驱动程序查询我的副本集中的集合。我可以连接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();

});

【问题讨论】:

  • 你可以获得不同的dbs如下:var mongoclient = new MongoClient(.....); var admin = mongoclient.db('admin'); var products = mongoclient.db('products'); ....

标签: node.js mongodb node-mongodb-native


【解决方案1】:

来自 MongoDB 2.0.0 驱动程序docs

间接针对另一个数据库

在某些情况下,您可能需要对另一个数据库进行身份验证,而不是您打算连接的数据库。这称为委托身份验证。假设您希望连接到 foo 数据库,但用户是在 admin 数据库中定义的。让我们看看我们将如何实现这一点。

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();

});

【讨论】:

  • 太好了,谢谢!找不到您引用的内容,所以我很高兴偶然发现您的答案 - 完美!
猜你喜欢
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 2019-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多