Node.js 连接 MongoDB 封装模块

1. 安装mongoDB

cnpm install --save-dev mongodb

2. 创建数据库

创建链接池 > 选择数据库 > 创建集合

// 引入mongodb驱动
var MongoClient = require('mongodb').MongoClient;
// 引入 mongodb服务器地址
var url = "mongodb://localhost:27017/runoob";
//创建链接池
MongoClient.connect(url, { useNewUrlParser: true }, function(err, monclient) {
  if (err) throw err;
  console.log("数据库已创建!");
//选择数据库 dbbaseName
  let dbbase = monclient.db("user");
//创建集合
dbase.createCollection(collectionName, function (err, res) {
        if (err) throw err;
        console.log("创建  集合!");
        monclient.close();//关闭服务器
    });  
//删除集合
dbase.collection(collectionName).drop(function(err, delOK) {  
// 执行成功 delOK 返回 true,否则返回 false
        if (err) {throw err;}
        if (delOK) {console.log("集合已删除");}
        db.close();
    });    
//***************进行3.数据操作+monclient.close();*****************//
});

3 .数据操作

查询数据find 排序数据sort
let pro = {name: new RegExp(/豆/)}
let sort = {age: -1}
dbbase.collection(collectionName).find(pro).sort(sort).toArray((err, result) => { //返回集合中所有数据
            if (err) {throw err;}
            callback(result);//返回查询的数据
            client.close();
   });
插入数据
var data = {a:"",b:""}
dbbase.collection(collectionName).insertOne(data,(err,result)=>{
        if (err) {throw err;}
        callback(data.result.ok);//返回修改的数据数量
        monclient.close();
    });
dbbase.collection(collectionName).insertMany(data,(err,result)=>{
        if (err) {throw err;}
        callback(data.result.ok);//返回修改的数据数量
        monclient.close();
    });    
更新数据
let pro = { name: "李四"}
let  set = {$set: { sex: "女", age: 8 }}
dbbase.collection(collectionName).updateOne(pro, set, (err, data) => {
                if (err) {throw err;}
                callback(data.result.ok);//返回修改的数据数量
                client.close();
            });
dbbase.collection(collectionName).updateMany(pro, set, (err, data) => {
                if (err) {throw err;}
                callback(data.result.ok);//返回修改的数据数量
                client.close();
            });       
删除数据
dbbase.collection(collectionName).deleteOne(trem, (err, data) => {
                if (err) {throw err;}
                callback(data.result.ok);//返回修改的数据数量
                client.close();
 });
 dbbase.collection(collectionName).deleteMany(trem, (err, data) => {
                if (err) {throw err;}
                callback(data.result.ok);//返回修改的数据数量
                client.close();
 });
查询分页
dbbase.collection(collectionName).find(pro).skip(skip).limit(limit).toArray((err, data) => {
                if (err) {throw err;}
                callback(data);//返回查询数据
                client.close();
            });

4 . 封装 数据操作 模块

调用 查询模块

//引入 mongodb 封装模块
let mongo = require("./mongoDBModule");
router.get("/find", (req, res) => {
    mongo.findCollection("user", { name: new RegExp(/豆/) }, { age: 1 }, (data) => {
        console.log(data);
    });
    res.send("查询集合");
});

封装 查询模块

module.exports = {
findCollection(collectionName, obj, sort, callback) {
        mongoConnect((client, dbbase) => {
            dbbase.collection(collectionName).find(obj).sort(sort).toArray((err, data) => {
                 if (err) {throw err;}
                callback(data);//返回查询数据
                client.close();
            });
        });
    }
}    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值