node + mongodb

西门展
2023-12-01

node + mongodb

  • 安装 + 引入

npm install mongodb -S
或者 npm i mongodb -S
var mysql = require(“mongodb”)

  • 实例化并链接

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

如果你不想看到客户端给你报警告则需要添加 { useUnifiedTopology: true }
比如:mongoCt.connect(‘mongodb://127.0.0.1:27017’,{ useUnifiedTopology: true },(err,client)=>{}

  • 链接库和集合

let db = client.db(“库名”)
let user = db.collection(’‘集合名’’)

集合操作

insertOne(对象数据,(err,res)=>{})
insertMany(arr数据, (err,res)=>{})
// res 是以数据的形式返回
// 比如:res.ops 返回的就是内容
// res.result 返回的是结果
// res.insertedId 返回的是插入后的 id

deleteOne({条件},(err,result)=>{})
deleteMany({条件})
db.集合名.remove({})
一般情况下deleteMany比remove效率要高
在我们工作生成环境下一般不会用到后面两条,一般的都是删除一条数据而不是 删库跑路
如果要删除集合的话则使用

db.集合.drop()

updateOne({条件},{更新后数据},(err,res)=>{})
updateMany({条件},{更新后数据},(err,res)=>{})

user.find({条件},{skip:1,limit:1,projection:{key:1}},(err,result)=>{result=对象})

skip :跳过前几条(这里是跳过前 1 条数据)
limit :你要显示多少条(你要有那么多条才行)
projection :你不希望看到哪个字段(key 是字段名称 1是显示 0 是隐藏)
user.find({条件},{projection:{key:0}}).toArray((err,result)=>{reulst==arr})
user.countDocuments((err,num)=>{num返回数量})

  1. 排序

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

user.find({},{ skip:2,limit:3,sort:{age:1,_id:-1}}) .toArray((err,result)=>{ console.log(result) })

这里的 sort 就是排序了
age:1 ,是按照年龄升序排序
_id:-1 ,是按照 _id 降序排序
那么在这就会有是会有疑问了,两个条件一起用会不会冲突呢?
答案是 不会 因为在这里排序是先按照第一个条件先排序,再按照第二个条件来排序的,就是当第一个条件排序完成之后可能会出现有两条数据或者多条数据的年龄是相同的,这时候就会 按照 _id 再降序排列了

  1. 关库

client.close()

为什么要关库?
在我们操做数据的的整个过程中我们的流一直是在开启的,一直开启有可能会导致内存泄漏,遭受黑客的攻击

下面是案例代码可以作为参考一下(如果觉得有帮助的话)

//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){
        //4.链接库
        let db = client.db("student")
        
        //5. 链接集合user
        let user = db.collection("user")
       
        //6. 集合相关操作
        //添加
        //insertOne(对象数据,(err,res)=>{})  //res = 对象  
        /* user.insertOne({username:"李四",age:28},(err,res)=>{
            if(!err){
                console.log(res)
                //7.关闭链接
                client.close()
            }
        })  */

        //insertMany(arr数据,(err,res)=>{}) //res = 对象  
        /* user.insertMany([
            {username:"ZZ刘继科",age:30},
            {username:"GZ张明敏",age:20}
        ],(err,result)=>{
            console.log(result.ops)
            console.log(result.insertedIds)

            //7.关闭链接
            client.close()
        }) */


        //删除
        //deleteOne({条件},(err,result)=>{})
        /* user.deleteOne({username:"ZZ刘继科"},(err,result)=>{
            console.log("err",err)
            console.log(result.ops)
            console.log(result.insertedIds)

             //7.关闭链接
            client.close()
        }) */


        //更新
        //updateMany({条件},{更新后},(err,res)=>{})
        // user.updateMany(
        //     {age:{$gt:20}},
        //     {$set:{address:"人民公园",fans:102,fllow:1000}}
        // ,(err,result)=>{
        //     console.log("result",result)
        //     7.关闭链接
        //     client.close()
        // })


        //查询操作
        //user.find({条件},{skip:1,limit:1,projection:{key:1}},(err,result)=>{result=对象})
        // user.find(
        //     {age:{$gt:20}},
        //     (err,result)=>{
        //         result.toArray((err,data)=>{
        //             console.log("data",data)
        //         })
        //     }
        // )


        // user.find({条件},{projection:{key:0}}).toArray((err,result)=>{reulst==arr})
        /* user.find(
            {age:{$gt:20}},
            {skip:1,limit:3,projection:{_id:0}} 
        ).toArray((err,data)=>{  
            console.log(data)
            // 7.关闭链接
            // client.close()
        }) */



        //排序与分页
        /* user.find({},{ skip:2,limit:3,sort:{age:1,_id:-1}})
		.toArray((err,result)=>{ 
            console.log(result) 
        }) */
    }else{
        console.log("库链接失败...",err)
    }
})

家中逆战,无畏疫情!!!

 类似资料: