node + mongodb client

node + mongodb client

Installation + introduction

npm install mongodb -S
var mysql = require('mongodb');

Instantiate and connect

let mongoCt = mongodb.MongoClient;
mongoCt.connect('协议://地址:端口',回调(err,client)) //err 错误 client链接后的客户端

Linked libraries and collections

let db = client.db('库名')
let user = db.collection('集合名');

Set operation

//user.API()  集合操作 	返回 对象

//增
	insertOne(对象数据,(err,res)=>{})  //res = 对象  
	insertMany(arr数据,(err,res)=>{}) //res = 对象  
    //res.result.n 结果  ok 状态
    //res.ops内容  数组
    //result.insertedId 插入后的id

//删:
  deleteOne({条件},(err,result)=>{})

//改:
  updateOne({条件},{更新后},(err,res)=>{})
  updateMany({条件},{更新后},(err,res)=>{})
  updateMany({条件},{更新后},{配置},(err,res)=>{})
    //配置: upsert:true 插入	projection:true 全局替换
//查:
  user.find({条件},{skip:1,limit:1,projection:{key:1}},(err,result)=>{result=对象})
  user.find({条件},{projection:{key:0}}).toArray((err,result)=>{reulst==arr})
  user.countDocuments((err,num)=>{num返回数量})

//排
  user.find(..).sort({key:-1}).toArray..
  user.find({},{projection:{},sort:{key:-1}}).toArray..

Close library

client.close()

Specific operation code:

// 1.引入mongodb客户端包
const mongodb = require("mongodb")

// 2.实例化
const mongoCt = mongodb.MongoClient; //创建实例化

// 3.链接mongodb
mongoCt.connect('mongodb://127.0.0.1"27017',{ useUnifiedTopology: true } ,(err,client)=>{
    console.log(err);
    console.log(client);
    if(!err){   //err 错误 client链接后的客户端
        //4. 链接库
        let db = client.db("student")
        //5.链接集合user
        let user = db.collection("user")        

        // 6. 操作集合
        // 插入一条数据
        user.insertOne({username:"李四",agg:28},(err,res)=>{
            if(!err){
                console.log(res);
            }
        })

		 // // 排序与分页
        // user.find({},{
        //     skip:2, //跳过最前面两条数据
        //     limit:3,    //一页提取3条数据
        //     sort:{age:1,_id:-1}     //按照age升序,id降序排序
        // }).toArray((err,result)=>{
        //     console.log(result);
        // })

        // 插入一条数据
        user.insertMany([
            {username:"郭靖",agg:22},
            {username:"黄蓉",agg:18}
            // 7. 关闭库
            client.close()
        ],(err,result)=>{
            console.log(result);
        })
    }else{
        console.log("链接失败...",err);
        
    }
}) 

Use express to link a mongodb:

// 1.引入mongodb客户端包
const mongodb = require("mongodb")
const express = require("express")
let app = express()
app.listen(3000, () => console.log("server is running..."))

// 创建接口
app.get("/api/user", (req, res, next) => {

    // 获取参数
    let {_page,_limit} = req.query;
    // 2.实例化
    const mongoCt = mongodb.MongoClient; //创建实例化
    // 3.链接mongodb
    mongoCt.connect('mongodb://127.0.0.1"27017', { useUnifiedTopology: true }, (err, client) => {
        if (!err) {   //err 错误 client链接后的客户端
            //4. 链接库
            let db = client.db("student")
            //5.链接集合user
            let user = db.collection("user")

            // 6. 操作集合
            // 排序与分页
            user.find({},{
                skip:(_page-1)*_limit-0, //跳过最前面skip条数据
                limit:_limit-0,    //一页提取limit条数据
                sort:{age:1,_id:-1}     //按照age升序,id降序排序
            }).toArray((err,result)=>{
                res.send({
                    err:0,
                    data:result
                })
            })
        } else {
            console.log("链接失败...", err);

        }
    })
})

Encapsulate a mongodb:

let mongodb = require("mongodb")
let mongodCt = mongodb.MongoClient

// 函数参数的解构与函数参数的默认值
module.exports = ({dbName,collectionName,success,error,url="mongodb://127.0.0.1:27017"})=>{
    mongoCt.connect(uel, { useUnifiedTopology: true }, (err, client) => {
        if(err){
            if(error) error(err)
        }else{
            let db = client.db(dbName)
            let user = db.collection(collectionName)
            if(success) success(user,client)
        }
    })
}


// let mongodb = require("xxx")
// mongodb({
//     dbName:'student',
//     collectionName:"user",
//     success:(collection,client)=>{
//         //collection进行 增删改查 操作...

//         // 关闭库
//         client.close()
//     },
//     err:error=>{

//     }
// })

Use the open method to encapsulate:

let mongodb = require("mongodb")
let mongodCt = mongodb.MongoClient
let ObjectId =  mongodb.ObjectId //把字符串转成ObjectId的对象类型

//链接库
/*
    dbName:数据库名称 默认值就是student
    collectionName:集合名字
    url:链接的url地址
*/
let open = ({dbName,collectionName,url="mongodb://127.0.0.1:27017"})=>{
    return new Promise((resolve,reject)=>{
        mongodCt.connect(url,{useUnifiedTopology: true},(err,client)=>{
            if(err){
                reject(err)
            }else{
                let db = client.db(dbName)
                let collection = db.collection(collectionName)
                resolve({collection,client})
            }
        })
    })
}

//查询库集合列表数据
let findList = ({
    collectionName,//集合名字
    dbName,//默认指明的数据库的名字
    _page,_limit,_sort,q
})=>{

    //生成检索条件
    let rule = q ? {username:new RegExp(q,'g')} : {}   //张三  张三丰   
    // let rule = q ? {username:eval('/'+q+"/")} : {}

    return new Promise((resolve,reject)=>{
        //链接数据库
        open({dbName,collectionName})
            .then(({collection,client})=>{
                //查询列表
                collection.find(rule,{
                    skip:_page*_limit - 1,//跳过多少条数据
                    limit:_limit - 0,//限定每一页的数量
                    sort:{[_sort]:1} //排序字段_sort  当一个变量作为key使用的时候,需要采用[]的语法
                }).toArray((err,result)=>{
                    if(!err && result.length>0){
                        resolve({err:0,data:result})
                    }else{
                        resolve({err:1,msg:"查无数据..."})
                    }
                    //关闭资源
                    client.close()
                })
            })
            .catch(err=>{ //链接数据库失败
                reject({err:1,msg:"数据库链接失败...."})
            })
    })
}


//根据动态id获取详情数据
let findDetail = ({
    dbName="student",//默认查询的数据库名字
    collectionName,//集合名字
    _id=null  //外面传入的_id 
})=>{
    return new Promise((resolve,reject)=>{
        //链库操作
        open({dbName,collectionName})
            .then(({collection,client})=>{
                //查询
                if(_id.length === 24){
                    collection.find({_id:ObjectId(_id)}).toArray((err,data)=>{   
                        //返回结果 
                        if(!err && data.length>0){
                            resolve({err:0,data:data[0]}) //因为result是一个数组,里面仅仅包含一条数据
                        }else{
                            resolve({err:1,msg:"查询不到数据...."})
                        }
                    })
                }else{
                    reject({err:1,msg:"id长度有误..."})
                }
            })
            .catch(err=>reject({err:1,msg:"链接数据库失败...."}))
    })
}



exports.open = open;  //{open:函数}
exports.findList = findList;  
exports.findDetail = findDetail;  

node + mongoose

Mongodb a client 's official website Chinese

Visual client

Published 31 original articles · Like 4 · Visitors 1006

Guess you like

Origin blog.csdn.net/qq_43942185/article/details/104910641