数据库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"
};