Node.js增删改查mongoDB

 这是 db.js, mongo连接的url引入了一个向外暴露的设置文件

/**
 * mongoDB 增删改查方法
 * Created by nows on 2017/3/14.
 */

var mongoClient = require('mongodb').MongoClient;
var setting = require("../setting.js");

function l(n){
    console.log(n);
}

/**
 * 连接 mongoDB
 * @param callback
 * @private
 */
function _connectMd(callback){
    var url = setting.dbUrl;
    mongoClient.connect(url,function(err,db){
        if(err){
            l("mongoDB 连接失败");
            return;
        }
        l("mongoDB 连接成功");
        callback(err,db);
    });
}

/**
 * 增加数据
 * @param obj
 */
exports.insertOne = function (obj){
    _connectMd(function(err,db){
        db.collection(obj.name).insertOne(obj.json,function(err,result){
            if(err){
                obj.callback("增加失败",null);
                db.close();
                return;
            }
            obj.callback(err,result);
            db.close();
        });
    });
}

/**
 * 删除多个匹配
 * @param obj
 */
exports.deleteMany = function (obj){
    _connectMd(function(err,db){
        var collection = db.collection(obj.name);
        collection.deleteMany(obj.json, function(err, result) {
            if(err){
                obj.callback("删除失败",null);
                db.close();
                return;
            }
            obj.callback(null,result);
            db.close();
        });
    });
}

/**
 * 删除一个
 * @param obj
 */
exports.deleteOne = function (obj){
    _connectMd(function(err,db){
        var collection = db.collection(obj.name);
        collection.deleteOne(obj.json, function(err, result) {
            if(err){
                obj.callback("删除失败",null);
                db.close();
                return;
            }
            obj.callback(null,result);
            db.close();
        });
    });
}

/**
 * 修改多个匹配
 * @param obj
 */
exports.updateMany = function (obj){
    _connectMd(function(err,db){
        var collection = db.collection(obj.name);
        collection.updateMany(obj.oldData,obj.newData,function(err,result){
            if(err){
                obj.callback("更新失败",null);
                db.close();
                return;
            }
            obj.callback(null,result);
            db.close();
        });
    });
};

/**
 * 修改一个
 * @param obj
 */
exports.updateOne = function (obj){
    _connectMd(function(err,db){
        var collection = db.collection(obj.name);
        collection.updateOne(obj.oldData,obj.newData,function(err,result){
            if(err){
                obj.callback("更新失败",null);
                db.close();
                return;
            }
            obj.callback(null,result);
            db.close();
        });
    });
};

/**
 * 查找
 * @param obj
 */
exports.find = function (obj){
    _connectMd(function(err,db){
        // 限制数量
        var pageAmount = obj.pageAmount == undefined ? 0 : obj.pageAmount;
        // 第几页
        var page = obj.page == undefined ? 0 : obj.page;
        // 省略数量
        var skip =  pageAmount * page;
        // 排序
        var sort = obj.sort == undefined ? {} : obj.sort;
        var collection = db.collection(obj.name).find(obj.json).limit(pageAmount).skip(skip).sort(sort);
        collection.toArray(function(err,docs){
            if(err){
                obj.callback("查找失败",null);
                db.close();
                return;
            }
            obj.callback(null,docs);
            db.close();
        });
    });
}

 这是测试testMongoDB.js

/**
 * mongoDB 增删改查测试
 * Created by nows on 2017/3/14.
 */

var express = require("express");
var app = express();
var db = require("./model");

function l(n){
   console.log(n);
}

//增加
app.get("/",function(req,res){
    db.insertOne({
        name:"student",
        json:{
            "id" : (parseInt(Math.random() * 89999999) + 10000000),
            "name" : "ZhuYuan",
            "age" : 22,
        },
        callback:function(err,result){
            if(err){
                res.end(err);
            }
            res.json(result);
        }
    });
});

//删除
app.get("/delete",function(req,res){
    db.deleteMany({
        name: "student",
        json: {
            id : 463575
        },
        callback:function(err,result){
            if(err){
                res.end(err);
            }
            res.json(result);
        }
    });
});

//修改
app.get("/update",function(req,res){
    db.updateOne({
        name:"student",

        oldData:{
            name:"小强"
        },
        newData:{
            $set : {
                name : "修改为: 小强"
            }
        },
        callback:function(err,result){
            if(err){
                res.end(err);
            }
            res.json(result);
        }
    });
});

//查找
app.get("/find",function(req,res){
    var page = req.query.page;
    var getPage = page == undefined ? 0 : parseInt(page);
    var result = [];
    db.find({
        name:"student",
        json:{},
        pageAmount:10, //每页的数量
        page:getPage, //从每几页开始查找
        callback:function(err,result){
            // 不设置页数和数量默认查找所有,在数组如果中筛选,这是错误的查找
            /*for(var i = 10 * page; i < 10 * (page + 1); i++){
             l(i);
             result.push(docs[i]);
             }
             res.json(result);*/
            if(err){
                res.end(err);
            }
            res.json(result);
        }
    });
});

app.listen(3000);
l(new Date());

 

转载于:https://my.oschina.net/u/2999760/blog/861475

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值