数据库mongodb封装库

数据库mongodb封装库初级版

//引入mongodb模块
const MongoClient=require("mongodb").MongoClient;
//数据库地址
const url="mongodb://localhost:27017";
//数据库名
const dbname="login";

//连接数据库
function mongoConnect(callback) {
    MongoClient.connect(url,{ useNewUrlParser: true },function (err, client) {
        if(err){
            console.log("连接数据库失败");
            return;
        }
        //将client通过callback回调函数传出;
        callback(client);
    });
}

//1.在数据库中指定集合插入一条数据;
//参数:集合, 插入数据,callback导出信息
exports.insertOne=function (collectionName, json, callback) {
    mongoConnect(function (client) {
        //获取数据库db,注:3.0以上版本获取数据库会有差异;
        var db=client.db(dbname);
        var col=db.collection(collectionName);
        col.insertOne(json,function (err, result) {
            callback(err,result);
            client.close();//关闭与数据库的连接
        })
    })
};

//2.查找数据库中集合下的数据
//参数:集合 待查找的数据  分页和排序参数 callback导出信息
//其中第三个分页和排序参数可传可不传;参数的格式为:{"sort":{"time":-1},page,pageamount}
exports.find=function (collectionName,json1,json2,callback) {
    if(arguments.length===3){
        //说明json2没有传;第三个参数传的是回调;
        callback=json2;
        json2={};
    }
    var sort=json2.sort || {};//默认值为空对象,即乱序;
    var limit=Number(json2.pageamount) || 0;//默认值为0,必须为数字
    var skip=Number(json2.page) || 0;//默认跳过0;
    mongoConnect(function (client) {
        var db=client.db(dbname);
        var col=db.collection(collectionName);
        //用toArray将获取的数据以数组的形式传出;
        col.find(json1).sort(sort).limit(limit).skip(skip*limit).toArray(function (err, doc) {
            callback(err,doc);
            client.close();//关闭与数据库的链接
        })
    })
};
//3 修改更新数据
//参数:集合 待修改数据  修改后的数据 callback导出信息
exports.updateMany=function (collectionName, json1, json2, callback) {
    mongoConnect(function (client) {
        var db=client.db(dbname);
        var col=db.collection(collectionName);
        col.updateMany(json1,json2,function (err, result) {
            callback(err,result);
            client.close();
        })
    })
};
//4 删除
//参数:集合 待删除 callback导出信息
exports.deleteMany=function (collectionName, json, callback) {
    mongoConnect(function (client) {
        var db=client.db(dbname);
        var col=db.collection(collectionName);
        col.deleteMany(json,function (err, result) {
            callback(err,result);
            client.close();
        })
    })
};
//5 获取集合下满足条件的总个数
//参数:集合 数据 callback导出信息
exports.count=function (collectionName, json, callback) {
   mongoConnect(function (client) {
       var db=client.db(dbname);
       var col=db.collection(collectionName);
       col.countDocuments(json,function (err, count) {
           callback(err,count);
           client.close();
       })
   })
};

数据库mongodb封装库高级版

//引入mongodb模块
const MongoClient=require("mongodb").MongoClient;
//引入设置参数的自定义模块
const urlSetting=require("./dbsetting");
const url=urlSetting.url;
const dbName=urlSetting.dbName;
//连接数据库
function getMongodb(callback) {
    MongoClient.connect(url,{useNewUrlParser:true},function (err, client) {
        if(err){
            console.log("连接数据库失败");
            return;
        }
        console.log("连接数据库成功");
        //以下为3.0以上版本的mongodb获取db的方式,2.0与其不同;
        var db=client.db(dbName);
        callback(db);
        client.close();//关闭与数据库的连接
    })
}
//输出对象
module.exports={
    //1.增
    //1)插入该数据库下指定集合中一条数据
    insertOne:function (colName,json,callback) {
        getMongodb(function (db) {
            var col=db.collection(colName);
            col.insertOne(json,function (err, doc) {
                callback(err,doc);
            })
        })
    },
    //2)插入该数据库下指定集合中多条数据
    insertMany:function (colName,jsonAry,callback) {
        getMongodb(function (db) {
            var col=db.collection(colName);
            col.insertMany(jsonAry,function (err, doc) {
                callback(err,doc);
            })
        })
    },
    //2.删
    //1)删除该数据库中指定集合中满足条件的一条数据
    deleteOne:function (colName, filter, callback) {
        getMongodb(function (db) {
            var col=db.collection(colName);
            col.deleteOne(filter,function (err, doc) {
                callback(err,doc);
            })
        })
    },
    //2)删除该数据库中指定集合中满足条件的所有数据
    deleteMany:function (colName, filter, callback) {
        getMongodb(function (db) {
            var col=db.collection(colName);
            col.deleteMany(filter,function (err, doc) {
                callback(err,doc);
            })
        })
    },
    //3.改
    //1)修改该数据库中的指定集合中满足条件的一条数据
    updateOne:function (colName, filter, updatejson, callback) {
        getMongodb(function (db) {
            var col=db.collection(colName);
            col.updateOne(filter,updatejson,function (err, doc) {
                callback(err,doc);
            })
        })
    },
    //2)修改该数据库中指定集合中满足条件的所有数据
    updateMany:function (colName, filter, updatejson, callback) {
        getMongodb(function (db) {
            var col=db.collection(colName);
            col.updateMany(filter,updatejson,function (err, doc) {
                callback(err,doc);
            })
        })
    },
    //4.查
    //1)查找满足条件的数据,并排序,分页获取
    //参数:colName:集合名;filter:筛选条件;sortjson:排序、分页;模板{"sort":{"age":-1},page,pageamount}
    find:function (colName, filter, sortjson, callback) {
        if(arguments.length===3){
            //没有设置sortjson参数
            callback=arguments[2];
            sortjson={};
        }
        var sort=sortjson.sort || {};//默认值为空对象;即乱序
        var page=Number(sortjson.page) || 0;//默认值为0,必须是数字;代表哪一页;
        var pageamount=Number(sortjson.pageamount) || 0;//默认跳过0个数据;代表每页的数据个数
        getMongodb(function (db) {
            var col=db.collection(colName);
            col.find(filter).sort(sort).limit(pageamount).skip(pageamount*page).toArray(function (err, docs) {
                callback(err,docs);
            })
        });
    },
    //2)获取满足条件的数据的总个数
    count:function (colName, filter, callback) {
        getMongodb(function (db) {
            var col=db.collection(colName);
            col.countDocuments(filter,function (err, count) {
                callback(err,count);//返回的count为number类型;
            })
        })
    }
};
  • dbsetting.js文件代码:
module.exports={
    url:"mongodb://localhost:27017",
    dbName:"guo"
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容