node.js连接MongoDB数据库的2种方法教程
发布时间 - 2026-01-11 01:08:57 点击率:次前言

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模块
要从Node.js连接MongoDB数据库我们有两种方法可选择:
- 通过实例化mongodb模块中提供的mongodbClient类,然后使用这个实例化的对象来创建和管理mongodb连接;
- 使用字符串进行连接;
1、通过client对象连接到MongoDB
通过实例化一个MongoClient对象连接MongoDB数据库是最常用也是最佳的方式。
创建MongoClient对象实例的语法:
MongoClient( server, options );
server : 一个serverd对象;
options : 数据库连接选项;
如上图所示,MongoClient连接利用了后台的Server对象。这个对象的功能就是定义了MongoDB驱动程序怎么连接到服务器。
下面,看一个示例:
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( '已关闭连接......' );
});
}
});
}
}
});
注意: 要注销数据库,要使用数据库对象上的logout()方法。这将关闭到该数据库上的连接,你不在可以使用Db对象。例如: db.logout();而要关闭到MongoDB的连接,要在客户端连接上调用close()方法,例如: client.close() 。
写入关注
首先,我们在连接数据库的时候会用到一个关于写入关注级别的问题,说白了,个人理解的话就是相当于出现问题的一个处理优先顺序,你可以选择写入数据库之前是否需要你确认之类的,或者发生错误是否忽略之类的等等,如下图:
| 写 入 级 别 | 说 明 |
|---|---|
| -1 | 网络错误被忽略 |
| 0 | 写确认是不必要的 |
| 1 | 请求写确认 |
| 2 | 写确认请求跨主服务器和副本集中的一个辅助服务器 |
| majority | 写确认是从副本集的主服务器请求的 |
用来创建MongoClient连接的Server对象的选项,如下:
用来创建MongoClient连接的数据库连接选项,如下:
2、通过一个连接字符串连接到MongoDB
这种方式要调用MongoClient类的connect( )方法。connect使用语法如下:
MongoClient.connect(connString, options, callback)
connString字符串的语法如下:
mongodb://username:password@host:port/database?opations
MongoClient连接字符串组件:
| 选 项 | 说 明 |
|---|---|
| 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参数上指定这些选项 |
下面,看一个使用连接字符串方法连接MongoDB数据库的示例:
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('连接已经关闭!');
});
}
});
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# nodejs连接mongodb
# nodejs
# mongodb
# 连接到mongodb
# Node.js操作MongoDB数据库实例分析
# Node.js中使用mongoose操作mongodb数据库的方法
# Node.js对MongoDB数据库实现模糊查询的方法
# Node.js连接MongoDB数据库产生的问题
# node.js连接mongoDB数据库 快速搭建自己的web服务
# 了不起的node.js读书笔记之mongodb数据库交互
# node.js操作mongoDB数据库示例分享
# Node.js中Mongodb数据库操作方法(最新推荐)
# 连接到
# 多个
# 身份验证
# 可选
# 客户端
# 你可以
# 最好的
# 他是
# 是从
# 要在
# 它可以
# 可以使用
# 所示
# 这篇文章
# 有两种
# 谢谢大家
# 说白了
# 可选择
# 这将
# 要使
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
原生JS实现图片轮播切换效果
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
Laravel如何发送系统通知?(Notification渠道示例)
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
如何挑选优质建站一级代理提升网站排名?
怎样使用JSON进行数据交换_它有什么限制
Python文件异常处理策略_健壮性说明【指导】
Laravel如何构建RESTful API_Laravel标准化API接口开发指南
如何快速重置建站主机并恢复默认配置?
手机网站制作与建设方案,手机网站如何建设?
Laravel如何使用Eloquent进行子查询
Laravel如何使用Vite进行前端资源打包?(配置示例)
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Laravel如何与Pusher实现实时通信?(WebSocket示例)
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
Python图片处理进阶教程_Pillow滤镜与图像增强
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
Laravel怎么判断请求类型_Laravel Request isMethod用法
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何在万网自助建站平台快速创建网站?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
潮流网站制作头像软件下载,适合母子的网名有哪些?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何在阿里云购买域名并搭建网站?
原生JS获取元素集合的子元素宽度实例
Android使用GridView实现日历的简单功能
javascript如何操作浏览器历史记录_怎样实现无刷新导航
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
如何在云主机快速搭建网站站点?
canvas 画布在主流浏览器中的尺寸限制详细介绍
如何破解联通资金短缺导致的基站建设难题?
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
Android实现代码画虚线边框背景效果
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
Python高阶函数应用_函数作为参数说明【指导】
如何在云主机上快速搭建网站?
JavaScript常见的五种数组去重的方式
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何确保FTP站点访问权限与数据传输安全?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
企业网站制作这些问题要关注
HTML 中动态设置元素 name 属性的正确语法详解

