mangodb知识汇总

数据库mongodb封装库

2018-12-15  本文已影响0人  果木山

数据库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类型;
            })
        })
    }
};
module.exports={
    url:"mongodb://localhost:27017",
    dbName:"guo"
};
上一篇 下一篇

猜你喜欢

热点阅读