Node.js入门(6)之Node.js与MongoDB简单交互

发表日期:  Creative Commons Licence

参考 http://blog.csdn.net/a1104258464/article/details/51025687

3.x.x版本的mongo插件有大改动,会报错,测试使用的是^2.2.33版本。

创建工程

cd到目标目录下express mongo -e

安装MongoDB模块

npm install mongodb -save

  • npm install 与 npm install -save的区别是:后者安装的同时,将信息写入package.json中项目路径中,如果有package.json文件时,直接使用npm install方法就可以根据dependencies配置安装所有的依赖包,这样代码提交到github时,就不用提交node_modules这个文件夹了。

连接MongoDB

声明MongoClient实例:

var MongoClient = require('mongodb').MongoClient;

声明数据库的URL。

MongoDB连接URL格式为:

mongodb://用户:密码@地址:端口/数据库

若无密码则省略“用户:密码@”。

例:var url = "mongodb://localhost:27017/test";

连接数据库

MongoClient.connect(url, function(err, db) {  
  console.log("数据库连接成功");  
  db.close();  
});  

后面的方法参数为回调函数。

对数据库的操作代码

操作格式:

MongoClient.connect(url, function(err, db) {  
  console.log("数据库连接成功");  
  insertDocument(db,function(){   
    db.close();  
  })  
}); 

insertDocument为对数据库的操作方法。

插入操作

var insertDocument = function(db, callback) {  
   //连接表  
   var collection =db.collection('collectionName');   
   var user={  
     name:'Dandy',  
     age:18  
   }  
   //插入数据  
   collection.insertOne(user, function(err, result) {   
     if(err){  
       console.log(err)  
     }  
     console.log("插入成功");   
     callback();  
  });  
};  

查询操作

var findRestaurants = function(db, callback) {  
   var cursor = db.collection('collectionName').find( );  
   cursor.each(function(err, result) {   
      if (result != null) {  
         console.log(result);  
      } else {  
         callback();  
      }  
   });  
};  

or查询:

var findRestaurants = function(db, callback) {  
   var cursor =db.collection('first').find({$or :[{name:'Dandy'},{age:3}]});  
   cursor.each(function(err, result) {   
      if (result != null) {  
         console.log(result);  
      } else {  
         callback();  
      }  
   });  
}; 

修改操作

var updateRestaurants = function(db, callback) {  
  var collection =db.collection('first');   
  collection.updateOne({name:"Dandy"},{$set: {age:13}}, function(err, results) {  
    console.log(results.result);  
    callback();  
  });  
};  

删除操作

var removeRestaurants = function(db, callback) {  
  var collection =db.collection('first');   
  collection.deleteMany(  
      { name: "tom2" },  
      function(err, results) {  
         console.log(results.result);  
         callback();  
      }  
   );  
};  

官方API文档

http://mongodb.github.io/node-mongodb-native/2.0/

github项目地址https://github.com/mongodb/node-mongodb-native