使用Nodejs连接mongodb数据库的实现代码
一个简单的nodejs连接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数据库的实现代码,希望对大家有所帮助
下一篇: Centos下配置Redis开机启动脚本