为什么在mongodb-native驱动程序中有单独的mongo.Server和mongo.Db?

gra*_*ing 10 javascript mongodb node.js node-mongodb-native

我只是在学习nodejs的mongodb-native驱动程序.

我这样连接.

var mongo=require("mongodb")

var serv=mongo.Server("localhost", 27017)
var dbase=mongo.Db("MyDatabase", serv)
Run Code Online (Sandbox Code Playgroud)

这很有效.但是,如果我尝试使用相同的服务器创建新的数据库连接,我会收到错误.

var dbase2=mongo.Db("MyDatabase2", serv)
Run Code Online (Sandbox Code Playgroud)

"错误:无法跨多个Db实例共享服务器或ReplSet实例"

但是如果首先建立新的服务器连接,它就可以工作.

var serv2=mongo.Server("localhost", 27017)
var dbase2=mongo.Db("MyDatabase2", serv2)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是为什么有2个连接函数,一个用于Server,一个用于Db,当它们似乎必须一起使用时?

为什么不这样.

var dbase=mongo.Db("localhost", 27017, "MyDatabase")
Run Code Online (Sandbox Code Playgroud)

我想创建自己的功能,但是我想知道是否有其他原因它们是分开的.

谢谢.

Kos*_*tia 3

这是 mongo 文档上解决方案的链接,供参考。(似乎与其他海报提到的解决方案相同)

http://mongodb.github.com/node-mongodb-native/markdown-docs/database.html#sharing-the-connections-over-multiple-dbs

分离与 mongo 服务器和数据库的连接的目的是用于当您想要连接到 ReplSet 服务器或其他自定义参数时的情况。这样,您就有了一个连接到 mongodb 服务器的单独进程。

数据库连接调用是单独的,只是因为您在这里遇到的情况:您不仅仅想连接到 mongo 服务器和单个数据库,而是连接到多个数据库。连接到数据库和服务器的这种分离允许这种灵活性。

另一个解决方案:使用node-mongoskin

Mongoskin可以做你想做的事......它允许通过一个命令连接到服务器和数据库。不是 mongo-native 的解决方案,但值得考虑作为您未来项目的替代库。

var mongo = require('mongoskin');
var db = mongo.db('localhost:27017/testDB');
Run Code Online (Sandbox Code Playgroud)