当前访客身份:游客 [ 登录  | 注册加入尚学堂]
直播
新闻资讯

nodeJS下利用mongdb进行数据库操作

我来了! 发表于 2年前  | 评论(0 )| 阅读次数(816 )|   0 人收藏此文章,   我要收藏

需要引用的node_modules

npm  install mongodb

此处引用的mongodb模块版本为1.4.12

一.初始化mongdb.

var mongodb = require('mongodb');

var MongoClient = require('mongodb').MongoClient;
var db;
var util = require('util');  
// Initialize connection once
MongoClient.connect("mongodb://localhost:27017/threepigs", function(err, database) {
    if(err) throw err;
        db = database;
});

首先引用mongodb模块,然后获得MongoClient对象。

从MongoClient对象中调用connect方法获取数据库连接。注意connect方法会默认创建出含有五个数据库连接的连接吃。

二.CRUD操作.

所有操作中参数的数据格式均为BSON格式。

1.查询语句

db.collection(tableName).find({'XXXX': xxxx},{sort: {'XXXX': 1}}).toArray(function(err, docs) {
            if (err) throw err;
            return ;
        });

使用find函数查看某一文档内容,find()第一个参数为查询参数,第二个参数为对结果集操作

2.插入语句

db.collection(tableName).insert( {'XXXX': xxxx}, {w:1}, function(err, objects) {
                if (err) throw err;
                });

使用insert函数插入一个文档,insert()第一个参数为插入的数据。

3.更新操作

db.collection(tableName).update({'XXXX': xxxx}, {$set: {'XXXX': xxxx}}, {w:1,upsert:true}, function(err) {
                    if (err) console.warn(err.message);
                });

使用update函数更新一个文档,update()第一个参数为更新的数据,set参数查询被更新的文档。 upsert:true标记,如果set参数未查询到相应文档则新建一个。

4.删除操作

db.collection(tableName).remove( {'XXXX': xxxx} ,{w: 1}, function(err, docs) {
                            if (err) throw err;
                        });

使用remove()方法移除文档,remove()第一个参数为要移除文档的指定条件。

三.注意

因为nodeJS是异步的。所以在对数据库操作的时候,如果需要将上一步得到的结果传递给下一个操作那么就需要对这些操作做一定的处理单纯

db.collection(tableName).update({'XXXX': xxxx}, {$set: {'XXXX': xxxx}}, {w:1,upsert:true}, function(err) {
                    if (err) console.warn(err.message);
                });

db.collection(tableName).remove( {'XXXX': xxxx} ,{w: 1}, function(err, docs) {
                            if (err) throw err;
                        });

这样的并列操作是会出现问题的,因为上一步的操作的结果还没返回,nodeJS就已经进行到了下一步。

解决方法。

嵌套语句

db.collection(tableName).update({'XXXX': xxxx}, {$set: {'XXXX': xxxx}}, {w:1,upsert:true}, function(err) {
                    if (err) console.warn(err.message);
                                        
                    db.collection(tableName).remove( {'XXXX': xxxx} ,{w: 1}, function(err, docs) {
                                                if (err) throw err;
                                            });
                });

将下一步需要进行的操作放到上一步的回调函数中,保证其按顺序执行,但是当需要嵌套的数目非常大时,就会非常的麻烦。


**************************************** 原文链接:http://my.oschina.net/kakakaka/blog/337860
分享到:0
关注微信,跟着我们扩展技术视野。每天推送IT新技术文章,每周聚焦一门新技术。微信二维码如下:
微信公众账号:尚学堂(微信号:bjsxt-java)
声明:博客文章版权属于原创作者,受法律保护。如果侵犯了您的权利,请联系管理员,我们将及时删除!
(邮箱:webmaster#sxt.cn(#换为@))
北京总部地址:北京市海淀区西三旗桥东建材城西路85号神州科技园B座三层尚学堂 咨询电话:400-009-1906 010-56233821
Copyright 2007-2015 北京尚学堂科技有限公司 京ICP备13018289号-1 京公网安备11010802015183