node-mongo-native1.3.19连接mongo的最优方法
来源:互联网 发布:vmware mac镜像下载 编辑:程序博客网 时间:2024/06/05 17:09
最近需要在node下连接mongo,尝试了很多方法,本文简要总结一下
选择Driver
首先,基本上有4个常见的driver供选择
1.官方的是node-mongo-native
2.基于node-mongo-native,封装的mongoose,是一个ODM小框架
3.kiss小组同样基于node-mongo-native封装的mongoskin
4.mongojs
mongoose要求使用Document Schema,我们目前没有这个需求,所以不想用;mongoskin网上评价还可以,但是其GitHub库很久没更新了,而且查看了源代码,发现它是基于很老版本的node-mongo-native封装的,底层用的API现在都不推荐了,担心如果官方驱动继续升级,mongoskin没人维护;mongojs没怎么了解。总之最后还是决定用官方的node-mongo-native作为driver
重要文档
以下是node-mongo-native的相关文档:
官方Manual
Mongo上该Driver的主页
官方GitHub
其中比较重要的文档:
how to connect in a new and better way
MongoClient API
连接方式
截止到本文,driver的最新版本是1.3.19,由于要向后兼容,所以旧的API只是不推荐使用,并没有删除,介绍的文档又比较少,所以刚上手的时候会比较迷惑应该用哪个API
在1.2版本之前,是通过Db这个对象来连接,从1.2版本开始,推荐使用MongoClient这个对象
MongoClient并不是node driver自创的,而是mongodb官方推荐的新的连接方式,可以认为是一种规范,各语言的driver是规范的实现。node-mongo-native就是这种规范的一种实现(自1.2版)
Release Note: Default Write Concern Change
使用MongoClient也有2种方式,一种是使用
var MongoClient = require("mongodb").MongoClient;var client = new MongoClient();client.open()client.close()client.db()
这几个MongoClient的实例方法,构造方法还涉及到Server、ReplSet、Mongos等,比较繁琐。作者已经不推荐使用了:
deprecate direct Db/Server/ReplSet/Mongos
所以目前官方推荐的做法,是使用Connect URI + MongoClient.connect()方法
示例代码:
var mongoClient = require('mongodb').MongoClient;var url = "mongodb://localhost:2222,localhost:3333,localhost:4444/mydb?maxPoolSize=10&w=1&journal=true";// Open the connection to the servermongoClient.connect(url, function (err, db) { db.collection("test", {}, function (err, collection) { collection.count(function (err, count) { console.log("there are " + count + " documents in the collection"); db.close(); }); });});
使用的是connect url,然后用MongoClient.connect(url, option, callback)函数来连接。上面的例子,在url中指定了dbname,那么会直接创建到目标db的连接。如果省略dbname,则是创建到admin db的连接,而不是缺省的test db,这和shell的行为不一样
实际上第二个参数option经常是被省略的,option的作用是,某些参数如果在url中没有提供,那么可以在option中指定,或者在option中覆盖url中的配置
回调函数第一个参数是error,第二个参数类型不是MongoClient,而是Db,这是和new MongoClient().open()函数的主要区别
这种方式应该是目前的最佳实践,关键是如何配置连接url,在上面那个how to connect in a new and better way里描述得非常清楚了,需要时可以查看
- node-mongo-native1.3.19连接mongo的最优方法
- MONGO
- mongo
- mongo
- mongo
- mongo
- mongo
- mongo
- node操作mongo
- ThinkPHP连接mongo的奇异现象
- mongo连接不上的问题
- mongo入门--java连接mongo数据库
- mongo-java-driver连接mongo集群
- c++连接mongo数据库。
- mongo 连接出错
- mongo连接池参数
- PHP连接mongo
- mongo连接不上
- hud 1509 Windows Message Queue 简单优先队列
- auto_ptr浅析
- String,StringBuffer,StringBuilder,寻找最大相同字符串
- 关于多线程中代理的一个小例子
- 视图
- node-mongo-native1.3.19连接mongo的最优方法
- Java面向对象
- 用coffeescript 进行web开发
- UVa:571 Jugs
- sscanf函数与sscanf_s函数
- memcpy和memmove函数
- 排序算法实现 C/C++
- pfile spfile静态和动态修改配置参数
- 关于多线程中异步代理的一个小例子