为什么有单独的蒙戈.服务器和蒙戈.Db在Mongodb本地驱动程序中
Why is there separate mongo.Server and mongo.Db in mongodb-native driver?
我只是在学习nodejs的mongodb原生驱动程序。
我像这样连接。
var mongo=require("mongodb")
var serv=mongo.Server("localhost", 27017)
var dbase=mongo.Db("MyDatabase", serv)
这行得通。但是,如果我尝试使用相同的服务器创建新的数据库连接,则会出现错误。
var dbase2=mongo.Db("MyDatabase2", serv)
"错误:服务器或 ReplSet 实例无法在多个 Db 实例之间共享"
但是,如果先建立新的服务器连接,则可以正常工作。
var serv2=mongo.Server("localhost", 27017)
var dbase2=mongo.Db("MyDatabase2", serv2)
所以我的问题是为什么有 2 个连接函数,一个用于服务器,一个用于 Db,而似乎它们必须始终一起使用?
为什么不这样。
var dbase=mongo.Db("localhost", 27017, "MyDatabase")
我想制作自己的函数来做到这一点,但我想知道它们分开是否有其他原因。
谢谢。
这是 mongo 文档中解决方案的链接,供参考。(似乎与另一张海报提到的解决方案相同)
http://mongodb.github.com/node-mongodb-native/markdown-docs/database.html#sharing-the-connections-over-multiple-dbs
将连接到 mongo 服务器然后分离数据库的要点适用于您想要连接到 ReplSet 服务器或其他自定义参数的情况。这样,您就有一个单独的进程连接到mongodb服务器。
数据库连接调用是分开的,只是因为你在这里的情况:你不只是想连接到一个mongo服务器和一个数据库,而是连接到多个数据库。这种连接到数据库和服务器的分离允许这种灵活性。
另一种解决方案:使用节点蒙哥皮肤
蒙戈皮做你想做的事...它允许在一个命令中全部连接到服务器和数据库。不是 mongo 原生的解决方案,但值得考虑作为您未来项目的替代库。
var mongo = require('mongoskin');
var db = mongo.db('localhost:27017/testDB');
对于它的价值,你可以通过使用 Db#db()
来做你想做的事情,它似乎没有出现在官方文档中,但在db.js
的源代码中被列为公共 API:
/**
* Create a new Db instance sharing the current socket connections.
*
* @param {String} dbName the name of the database we want to use.
* @return {Db} a db instance using the new database.
* @api public
*/
所以你可以做
var serv=mongo.Server("localhost", 27017);
var dbase=mongo.Db("MyDatabase", serv);
var dbase2=dbase.db("MyDatabase2");
因为这是两个独立且不同的操作 - 您必须连接到(或已经有连接)数据库服务器(计算机)才能查询该特定服务器上的任何数据库。您可以为要使用的每个数据库创建不同的数据库查询连接,但同时您将使用与服务器的相同连接。
大多数情况下,您不希望为每个数据库(如果有很多)创建单独的服务器连接,因为服务器通常会限制连接数。
- Mongodb节点驱动程序2.0.*与Bluebird 2.9.*承诺
- Node.js Mongodb原生驱动程序连接共享
- 为什么有单独的蒙戈.服务器和蒙戈.Db在Mongodb本地驱动程序中
- MongoDB 2.0.0 驱动程序,按 ID 检索记录时出现问题
- 带有NodeJS驱动程序的MongoDB聚合游标
- 如何通过MongoDB驱动程序(node.js)将属性(属性名称是可变的)添加到对象中
- 我需要使用mongodb本机驱动程序来查找按时间戳字段排序的不同id
- MongoDB本机节点驱动程序:解释已损坏
- MongoDB的Node.js驱动程序安装失败
- 使用 Node.js 驱动程序生成动态 mongodb 查询
- 返回嵌套数组中的第一个元素,使用 mongodb 驱动程序为 node.js
- Nodejs MongoDB 本机驱动程序不显示文档
- 使用 Node.jS 驱动程序在 MongoDB 中迭代多个集合并比较结果
- Nodejs mongodb驱动程序[2.0-]BSON引用替换
- 如何使用NodeJS驱动程序创建新的MongoDb数据库
- NodeJS,使用MongoDB Native驱动程序,如何将ObjectID转换为字符串
- 在MongoDB中's原生NodeJS驱动程序,何时使用MongoClient构造函数,何时使用Db构造函数
- 从MongoDB驱动程序获取二进制字段
- 使用Mongoose与本机MongoDB驱动程序一起工作
- node.js-如何在mongodb驱动程序中切换数据库