使用Nodejs连接mongodb数据库的实现代码


Posted in NodeJs onAugust 21, 2017

一个简单的nodejs连接mongodb示例,来自 mongodb官方示例

1. 创建package.json

首先,创建我们的工程目录connect-mongodb,并作为我们的当前目录

mkdir connect-mongodb
cd connect-mongodb

输入npm init命令创建package.json

npm init

然后,安装mongodb的nodejs版本driver

npm install mongodb --save

mongodb驱动包将会安装到当前目录下的node_modules中

2. 启动MongoDB服务器

安装MongoDB并启动MongoDB数据库服务,可参考我之前的文章,或者MongoDB官方文档

3. 连接MongoDB

创建一个app.js文件,并添加以下代码来连接服务器地址为192.168.0.243,mongodb端口为27017上名称为myNewDatabase的数据库

var MongoClient = require('mongodb').MongoClient,
  assert = require('assert');
// Connection URL
var url = 'mongodb://192.168.0.243:27017/myNewDatabase';
MongoClient.connect(url,function(err,db){
  assert.equal(null,err);
  console.log("Connection successfully to server");
  db.close();
});

在命令行输入以下命令运行app.js

node app.js

4. 插入文档

在app.js中添加以下代码,使用insertMany方法添加3个文档到documents集合中

var insertDocuments = function(db, callback){
  // get ths documents collection
  var collection = db.collection('documents');
  // insert some documents
  collection.insertMany([
    {a:1},{a:2},{a:3}
  ],function(err,result){
    assert.equal(err,null);
    assert.equal(3,result.result.n);
    assert.equal(3,result.ops.length);
    console.log("Inserted 3 documents into the collection");
    callback(result);
  });
};

insert命令返回一个包含以下属性的对象:

  • result MongoDB返回的文档结果
  • ops 添加了_id字段的文档
  • connection 执行插入操作所使用的connection

在app.js更新以下代码调用insertDocuments方法

var MongoClient = require('mongodb').MongoClient
 , assert = require('assert');
// Connection URL
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, db) {
 assert.equal(null, err);
 console.log("Connected successfully to server");
 insertDocuments(db, function() {
  db.close();
 });
});

在命令行中使用node app.js运行

5. 查询所有文档

添加findDocuments函数

var findDocuments = function(db,callback){
  // get the documents collection
  var collection = db.collection('documents');
  // find some documents
  collection.find({}).toArray(function(err,docs){
    assert.equal(err,null);
    console.log("Found the following records");
    console.log(docs);
    callback(docs);
  });
};

findDocuments函数查询了所有'documents'集合中所有的文档,将此函数添加到MongoClient.connect的回调函数中

var MongoClient = require('mongodb').MongoClient
 , assert = require('assert');
// Connection URL
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, db) {
 assert.equal(null, err);
 console.log("Connected correctly to server");
 insertDocuments(db, function() {
  findDocuments(db, function() {
   db.close();
  });
 });
});

6. 使用过滤条件(query filter)查询文档

查询'a':3的文档

var findDocuments = function(db, callback) {
 // Get the documents collection
 var collection = db.collection('documents');
 // Find some documents
 collection.find({'a': 3}).toArray(function(err, docs) {
  assert.equal(err, null);
  console.log("Found the following records");
  console.log(docs);
  callback(docs);
 });   
}

7. 更新文档

var updateDocument = function(db,callback){
  // get the documents collection
  var collection = db.collection('documents');
  // update document where a is 2, set b equal to 1
  collection.updateOne({a:2},{
    $set:{b:1}
  },function(err,result){
    assert.equal(err,null);
    assert.equal(1,result.result.n);
    console.log("updated the document with the field a equal to 2");
    callback(result);
  });
};

updateDocument方法更新满足条件a为2的第一个文档,新增一个b属性,并将其设置为1。

将updateDocument方法添加到MongoClient.connect方法的回调中

MongoClient.connect(url,function(err,db){
  assert.equal(null,err);
  console.log("Connection successfully to server");
  insertDocuments(db,function(){
    updateDocument(db,function(){
      db.close();
    });
  });
});

8. 删除文档

var removeDocument = function(db,callback){
  // get the documents collection
  var collection = db.collection('documents');
  // remove some documents
  collection.deleteOne({a:3},function(err,result){
    assert.equal(err,null);
    assert.equal(1,result.result.n);
    console.log("removed the document with the field a equal to 3");
    callback(result);
  });
};

添加到app.js中

var MongoClient = require('mongodb').MongoClient
 , assert = require('assert');
// Connection URL
var url = 'mongodb://localhost:27017/myproject';
// Use connect method to connect to the server
MongoClient.connect(url, function(err, db) {
 assert.equal(null, err);
 console.log("Connected successfully to server");
 insertDocuments(db, function() {
  updateDocument(db, function() {
   removeDocument(db, function() {
    db.close();
   });
  });
 });
});

9. 创建索引

索引能够改善应用的性能。下面你代码在'a'属性上添加索引

var indexCollection = function(db,callback){
  db.collection('documents').createIndex({
    a:1
  },null,function(err,results){
    console.log(results);
    callback();
  });
};

更新app.js

MongoClient.connect(url,function(err,db){
  assert.equal(null,err);
  console.log("Connection successfully to server");
  insertDocuments(db,function(){
    indexCollection(db,function(){
      db.close();
    });
  });
});

代码已经托管在码云

总结

以上所述是小编给大家介绍的使用Nodejs连接mongodb数据库的实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

NodeJs 相关文章推荐
windows下安装nodejs及框架express
Aug 07 NodeJs
nodejs微信公众号支付开发
Sep 19 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
nodejs制作爬虫实现批量下载图片
May 19 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
Nodejs实现多文件夹文件同步
Oct 17 NodeJs
nodejs 使用 js 模块的方法实例详解
Dec 04 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodejs如何在package.json中设置多条启动命令
Mar 16 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 NodeJs
nodejs动态创建二维码的方法
Aug 12 #NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 #NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 #NodeJs
让nodeJS支持ES6的词法----babel的安装和使用方法
Jul 31 #NodeJs
浅谈nodejs中的类定义和继承的套路
Jul 26 #NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 #NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 #NodeJs
You might like
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
PHP 长文章分页函数 带使用方法,不会分割段落,翻页在底部
2009/10/22 PHP
简单的php写入数据库类代码分享
2011/07/26 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
Bootstrap表单布局
2016/07/19 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
vue组件name的作用小结
2018/05/23 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
使用vue开发移动端管理后台的注意事项
2019/03/07 Javascript
微信小程序登录态和检验注册过没的app.js写法
2019/05/22 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
web.py在模板中输出美元符号的方法
2014/08/26 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
Python partial函数原理及用法解析
2019/12/11 Python
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
探亲邀请信范文
2014/01/30 职场文书
高中军训第一天感言
2014/03/06 职场文书
大学校务公开实施方案
2014/03/31 职场文书
2015年国际护士节演讲稿
2015/03/18 职场文书
个人道歉信大全
2019/04/11 职场文书
Python趣味实战之手把手教你实现举牌小人生成器
2021/06/07 Python
Python采集股票数据并制作可视化柱状图
2022/04/04 Python
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL