MongoDB-----增、删、改、查

MonggoDB

简介

  • MonggoDB是一个分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  • 是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库中最像关系型数据库的一种。是功能最丰富的非关系型数据库。

安装和测试

  • 安装:一键next安装。

    • 将安装目录安装到系统环境变量PATH下;

    • 创建目录:

      c:\data\db			##存放数据
      c:\data\log			##存放目志
      
  • 启动连接:

    • 启动服务:mongod --dbpath c:\data\db
    • 客户端连接:mongo,需要从新再打开一个cmd;默认地址:127.0.0.1:17017
    • 将MongoDB 添加到windows系统服务,需要以管理员身份运行终端。
      • 添加服务:mongod --dbpath "C:\data\db" --logpath "C:\data\log\MongoDB.log" --install --serviceName "MongoDB"
      • 移除服务:mongod --dbpath "C:\data\db" --logpath "C:\data\log\MongoDB.log" --remove--serviceName "MongoDB"
      • 服务控制:net start|stop MongoDB

MySQL 和 MongoDB对比

  • 相关概念

    MySQL MongoDB
    database(数据库) db(数据库)
    table(数据表) collection(集合)
    row(行) document(文档)
    column(列) field(域/字段)

DB操作

命令 说明
show dbs 查看所有的库(如果数据库中没有数据,则不会显示)
db或db.getName() 查看当前库
use database 创建并切换数据库(使用的数据库不存在直接创建,在的直接切换)
db.dropDatabase() 删除数据库
help 帮助
exit或quit() 退出

collection操作

命令 说明
show collections 查看当前数据库下面所有集合
db.createCollections 创建一个空的集合
db.createCollection(“goods”) 创建goods集合
db.stu.insert({‘name’:‘shuorui’,age:18}) 按需创建
db.stu.drop() 删除选定的集合

document操作

命令 说明
db.user.insert({name:‘jiwei’,age:21,height:175,isDelete:0}) 增加一条数据
db.user.insert([{},{},{}]) 插入多条数据(每一个{}代表插入一条数据)
db.user.find() 查看所有数据
db.user.save({name:‘wenke’,age:40,height:170,isDelete:0}) save保存的数据没有_id字段插入一条字段
  • 更新操作:

    • save:

      ## 保存的数据有__id字段,会修改对应的数据。相当于更新操作
      db.user.save({_id:ObjectId("5be3ed63fe40ddb0481718b2"),name:'wenke',age:20,hei
      ght:178,isDelete:0})
      
    • update:

      db.集合.update(query,{upsert:<boolean>,multi:<boolean>})
      

      说明:query:表示查询条件,update:表示更新设置的内容。( s e t : set:表示设置; inc:表示增加)

        upsert:更新的查新结果不存在,是否作为新数据插入,默认为false
        
        multi:符合条件的数据是否全部更新,ture表示全部更新,false表示更新一条。默认为false
      
      db.user.update({age:22},{$set:{age:26}})       ## 更新一条
      db.user.update({height:175},{$inc:{height:1}},{multi:true})    ### 会更新所有
      
  • 删除文档

    • remove:db.集合名.remove(query,{justOne:<boolean>})

      db.user.remove({height:176})		## 默认删除所有符合条件的
      db.user.remove({isDelete:0}, {justOne:true})	#只会删除符合条件的一条数据
      
    • delete:删除文档

      如删除集合下全部文档:
      db.user.deleteMany({})
      删除 status 等于 A 的全部文档:
      db.user.deleteMany({ status : "A" })
      删除 status 等于 D 的一个文档:
      db.user.deleteOne( { status: "D" } )
      
  • 查询文档:db.user.find()

    • 格式:db.集合.find(query,key1:0/1,key2:0/1 ,keyn:0/1)

      • query:查询条件。

      • 第二个参数:要么同时为1,要么同时为0,不能混合

        db.user.find({}, {name: 1, age: 1}) // 指定返回的键,不返回其他键
        db.user.find({}, {name: 0, age: 0}) // 指定不返回的键,返回其他键
        
    • pretty():db.col.find().pretty() 格式化显示数据。

    • findOne():db.user.findOne({isDelete:0}) 只返回一条数据

查询条件操作符

格式:db.集合.find({key:{$gt:values}})

命令 说明
$gt 大于 示例:db.user.find({height:{$gt:100}})
$gte 大于等于
$lt 小于
$lte 小于或等于
$ne 不等于
$eq 等于(一般省略不写)
  • 个数统计:count():db.user.find().count()
  • 正则匹配: db.集合.find({<key>:/正则表达式}) 示例:db.user.find({name:/i/})

条件合并(and / or):

  • and条件:

    格式:
    db.col.find({key1:value1, key2:value2}).pretty()
    示例:
    db.user.find({height:{$gt:120,$lt:167}})     ##  height>120 and height<167
    db.user.find({height:{$gt:120},age:{$gt:6}})   ###   height>120 and  age>6
    
  • or条件:

    格式:
    db.集合.find({$or:[{条件1},{条件2}]})
    示例:
    db.user.find({$or:[{age:{$gt:20}},{grade:{$gt:80}}]})
    

限制结果集:

  • 限制数量:limit()
    • 示例:db.user.find().limit(2)
  • 设置偏移跳过数量:skip()
    • 示例:db.user.find().skip(2).limit()
  • 综合使用:db.user.find().skip(2).limit(2)

结果集排序

  • 排序:db.user.find().sort({<key>:1/-1})
    • key:表示排序的字段
    • 1/-1:表示排序规则,1表示升序,-1表示降序
    • 示例:db.user.find().sort({age:-1,height:1})
      • 可以指定多个排序字段,前面值一样,按照后面排序字段

索引管理

  • 说明:创建索引就是为了提高查询效率,1表示升序,-1表示降序,background表示后台

  • 示例:

    ### 单独创建索引
    db.user.createIndex({height:-1},{background:true})
    ### 创建组合索引
    db.user.createIndex({age:1,height:-1},{background:true})
    

猜你喜欢

转载自blog.csdn.net/Mr_791063894/article/details/85106230