node 操作 mongodb 数据库

mongodb

  1. 非关系型数据库,又叫 nosql ,使用场景多是解决大规模数据集合多重数据种类
  2. 官网下载安装即可
    • 如果安装文件目录中没有 data 文件夹,手动建一个 data 文件夹,data 下面再建一个 db 文件夹
    • 为了可以在任一盘符下都可以启动,最好手动配置一下全局环境变量
  3. 服务端启动
    • 终端中 输入指令 mongod --dbpath 安装路径 (D:\MongDB\bin)
  4. 客户端启动
    • 终端中 输入指令 mongo
  5. 注意: 如果安装过程中报错,直接跳过,安装完成后,在安装目录终端中输入指令
    • 删掉之前的服务:mongod --remove --serviceName "MongoDB"
    • 新建服务:mongod --dbpath “D:\Program Files\MongoDB\data” --logpath “D:\Program Files\MongoDB\log\mongod.log” --install --serviceName “MongoDB” ,注意路径需要改
命令行操作指令
  1. 库操作

    • 查看数据库:show dbs
    • 创建数据库:use 数据库名称 ,没有这个数据库就创建,有就切换
    • 删除数据库:db.dropDatabase() 删除当前数据库
  2. 集合操作

    • 查看:show collections / db.getCollectionNames()

    • 创建:**db.createCollection(‘集合名’, {配置})

    • 删除:db.集合名.drop()

  3. 文档操作(每一条数据)

    • 增加

      db.集合.save({}) //添加一条
      db.集合.insert({})  //添加一条
      db.insertOne({}) //添加一条
      
      db.集合.save([{},{}]) //多条
      db.集合.insert([{},{}]) //多条
      //insert  相同ID字段不会进行插入更改	save会覆盖插入
      
    • 删除

      db.集合.deleteOne({删除的条件}) //一条
      db.集合.remove({删除条件},true)  //一条
      
      db.集合.remove({删除的条件}) //多条
      db.集合.remove({}) //清空表
      
    • 修改

      db.集合.udpate({查询条件},{替换条件},插入boolean,全替换boolean)
      //将所有的用户名为李四的年龄全都设置为20岁
      db.user.update({username:"李四"},{$set:{age:20}},false,true)
      
      第三个参数:如果更新的数据没有的话则插入,默认不插入
      第四个参数:默认只更新一条数据,如果要批量更新设置true
      
    • 查询

      查所有:db.集合.find(查询条件)
      查条数: db.集合.find().count()
      去重:db.集合.distinct(key)  // 返回数组,.length 可以获取长度
      
      db.集合.find({查询条件},{age: 1,_id: 0})  // id 不显示,age 显示  1显示,0不显示
      
      /*
      查询条件:
      	{age: 22}		  age == 22
      	{age:{ $gt: 22 }}	age > 22
      	{age:{ $lt: 22}}      age < 22
      	{age:{ $gte: 22}}	age>=22
      	{age:{ $lte: 22}}	  age<=22
      	{age:{ $lte: 122,$gte: 22}}	age<=122 && age>=22
      	{$or:[{age: 22},{age: 122}]}	22 or 122
      	{key:value,key2:value2}  value && value2
      	{name:/正则/}
      替换条件:
      	{$set:{数据}}
      	{inc:{age:5}}    //在原来的基础上年龄递增5
      */
      
    • 排序

      db.集合.find().sort({key:1,key2:-1}) // 可以按多个条件排序
      db.集合.find().sort({key:-1})	//降
      
    • 限定

      db.集合.find().limit(number)  //限定
      db.集合.find().skip(number)	//跳过
      db.集合.findOne()             //找第一个
      db.集合.find().limit(1).skip(10)     // 跳过 10 条,查询 1 条
      

node + mongodb 使用

  1. 安装、引入

    // npm i mongodb -S
    const mongodb = require('mongodb')
    
  2. 实例化并连接

    let mongoCt = mongodb.MongoClient
    
    // mongoCt.connect('协议://地址:端口',回调(err,client)) 
    // err: 错误信息, client: 链接后的客户端
    mongoCt.connect('mongodb://localhost:27017',(err, client) => {})
    
  3. 链接数据库 和 集合

    let db = clicent.db('数据库名称')
    let collect = db.collection('集合名称')
    
  4. 操作集合

    • 增加数据
    // 语法:collect.API()
    // 增加数据
    collect.insertOne(数据对象, (err, res) => {})   // 增加一条数据
    collect.insertMany(arr数据, (err, res) => {})  // 增加多条数据 
    
    //res.result.n 结果  ok 状态
    //res.ops 插入的内容  数组
    //result.insertedId 插入后的id
    
    • 删除数据
    collect.deleteOne({删除条件}, (err, result) => {})  // 删除一条数据
    collect.deleteMant({}, (err, result) => {})  // 删除多条数据
    
    • 修改数据
    collect.updateOne({条件}, {更新后}, (err, res) => {})   // 修改一条数据
    collect.updateMany({条件}, {$set:{age: 24}}, (err, res) => {})  // 修改多条数据
    
    • 查询数据
    // 方法一:直接在回调函数里那结果, 返回值:对象  projection 中 key 为 1 表示显示
    collect.find({条件},{skip:1,limit:1,projection:{key:1}},(err,result)=>{ result=>对象 })
    
    // 方法二:返回结果直接 .toArray(err, res) 方法,转成 数组
    collect.find({条件},{skip:1,limit:1,projection:{key:0}}).toArray((err,result)=>{ reulst=>arr })
    
    • 排序
    // 方法一:
    collect.find().sort({key: -1}).toArray((err, res) => {})
    
    // 方法二:
    collet.find({查找条件}, {limit:5, sort: {key: 1}}).toArray((err, res) => {})
    
    • 分页
    collect.find({},{skip:5,limit:5}).toArray((err,result)=>{ reulst=>arr })
    
  5. 关闭数据库

    client.close()
    

    例子

    // 引入 mongodb 模块
    const mongodb = require('mongodb')
    
    // 实例化并连接
    let mongoCt = mongodb.MongoClient
    mongoCt.connect('mongodb://localhost:27017', { useUnifiedTopology: true }, (err, client) => {
      if(!err){
        // 链接 数据库
        let db = client.db('student')    // 链接 student 数据库
        // 链接 集合
        let collect = db.collection('info')  // 链接 info 集合
    
        // 增加数据
         collect.insertMany(
           [
             {username: "张三", age: 18, address: '江西九江'},
             {username: '李四', age: 20, address: '江西南昌'},
             {username: '王五', age: 16, address: '江西赣州'},
             {username: '赵六', age: 25, address: '江西新余'},
             {username: '麻子', age: 19, address: '福建泉州'},
             {username: '二狗', age: 28, address: '福建厦门'},
             {username: '愣子', age: 22, address: '福建福州'}
           ],
          (err, result) => {}
         )
    
        // 删除数据
         collect.deleteOne({username: '二狗'}, (err, result) => {
           console.log(result)
         })
    
        // 修改数据
         collect.updateOne(
             {username: '愣子'}, 
             {$set:{username: '二愣子', age: 24, address: '北京东城'}}, 
             (err, result) => {
           console.log(err)
         })
    
        // 查询数据(可以按条件查询,可以实现分页,排序等需求)
        collect.find({}, {skip:1, limit: 5, sort:{age: -1}})
            .toArray((err, res) => {
                  console.log(res)
    
                  // 关闭数据库连接
                  client.close()
        	}) 
      }
    })
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值