[b]前言[/b]
MongoDB Node.js驱动程序是被官方所支持的原生node.js驱动程序,他是至今为止最好的实现, 并且得到了MongoDB官方的支持。MongoDB团队已经采用MongoDB Node.js驱动程序作为标准方法。
npm install mongodb@1.4.3 // MongoDB Node.js驱动程序
npm install mongoose@3.8.8 //mongoose模块
[b]要从Node.js连接MongoDB数据库我们有两种方法可选择:[/b]
[list]
[*]通过实例化mongodb模块中提供的mongodbClient类,然后使用这个实例化的对象来创建和管理mongodb连接;[/*]
[*]使用字符串进行连接;
[/*]
[/list]
[b]1、通过client对象连接到MongoDB[/b]
通过实例化一个MongoClient对象连接MongoDB数据库是最常用也是最佳的方式。
[b]创建MongoClient对象实例的语法:[/b]
MongoClient( server, options );
server : 一个serverd对象;
options : 数据库连接选项;
[img]http://files.jb51.net/file_images/article/201705/2017517141022201.png?2017417141127[/img]
如上图所示,MongoClient连接利用了后台的Server对象。这个对象的功能就是定义了MongoDB驱动程序怎么连接到服务器。
[b]下面,看一个示例:[/b]
var MongoClient = require('mongodb').MongoClient,
Server = require('mongodb').server;
// 创建客户端连接对象
var client = new MongoClient( new Server('localhost', 27017, {
socketOpations: { connectTimeoutMS: 500 },
poolSize: 5,
auto_reconnect: true
}, {
numberOfRetries: 3,
retryMilliSeconds: 500
}));
// 打开对服务器端MongoDB数据库的连接
client.open(function(err, client) {
if ( err ) {
console.log('连接失败!');
} else {
var db = client.db('blogdb'); // 建立到数据库blogdb的连接
if ( db ) {
console.log('连接成功');
db.authenticate('username', 'pwd', function(err, result) { // 对用户数据库身份进行验证
if ( err ) {
console.log('数据库用户身份验证失败');
client.close(); // 关闭对MongoDB的连接
console.log('连接已关闭......');
} else {
console.log('用户身份验证通过');
db.logout(function (err, result) { // 关闭对数据库的连接,即退出数据库
if ( !err ) {
console.log('退出数据库出错');
}
client.close(); // 关闭对MongoDB的连接
console.log( '已关闭连接......' );
});
}
});
}
}
});
[b]注意: [/b]要注销数据库,要使用数据库对象上的[code]logout()[/code]方法。这将关闭到该数据库上的连接,你不在可以使用Db对象。例如: [code]db.logout();[/code]而要关闭到MongoDB的连接,要在客户端连接上调用[code]close()[/code]方法,例如: [code]client.close()[/code] 。
[b]写入关注[/b]
首先,我们在连接数据库的时候会用到一个关于写入关注级别的问题,说白了,个人理解的话就是相当于出现问题的一个处理优先顺序,你可以选择写入数据库之前是否需要你确认之类的,或者发生错误是否忽略之类的等等,如下图:
| 写 入 级 别 |
说 明 |
| -1 |
网络错误被忽略 |
| 0 |
写确认是不必要的 |
| 1 |
请求写确认 |
| 2 |
写确认请求跨主服务器和副本集中的一个辅助服务器 |
| majority |
写确认是从副本集的主服务器请求的 |
[b]用来创建MongoClient连接的Server对象的选项,如下:[/b]
[img]http://files.jb51.net/file_images/article/201705/2017517141341168.png?2017417141350[/img]
[b]用来创建MongoClient连接的数据库连接选项,如下:[/b]
[img]http://files.jb51.net/file_images/article/201705/2017517141411656.png?2017417141419[/img]
[b]2、通过一个连接字符串连接到MongoDB[/b]
这种方式要调用MongoClient类的[code]connect( )[/code]方法。connect使用语法如下:
MongoClient.connect(connString, options, callback)
[b]connString字符串的语法如下:[/b]
mongodb://username:password@host:port/database?opations
[b]MongoClient连接字符串组件:[/b]
| 选 项 |
说 明 |
| mongodb:// |
指定字符串使用mongodb的连接格式 |
| username |
验证时使用的用户名。可选 |
| password |
身份验证时使用的密码。可选 |
| host |
MongoDB服务器主机名或者域名。它可以是多个host:port组合来连接多个MongoDB服务器。 例如:mongodb://host1:270017, host2://270017, host3:270017/testDB |
| port |
连接MongoDB服务器时使用的端口。默认值是27017 |
| database |
要连接的数据库的名字。 默认为admin |
| options |
连接时所使用的选项的键值对。可以在dbOpt和serverOpt参数上指定这些选项 |
[b]下面,看一个使用连接字符串方法连接MongoDB数据库的示例:[/b]
var MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://mongodb:test@localhost:27017/blogdb', {
db: { w: 1, native_parser: false },
server: {
poolSize: 5,
socketOpations: { connectTimeoutMS: 500 },
auto_reconnect: true
},
replSet: {},
mongos: {}
}, function(err, db) {
if ( err ) {
console.log('连接失败!');
} else {
console.log('连接成功!');
// 注销数据库
db.logout(function(err, result) {
if ( err ) {
console.log('注销失败...');
}
db.close(); // 关闭连接
console.log('连接已经关闭!');
});
}
});
[b]总结[/b]
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程素材网的支持。