MongoDB入门

MongoDB入门

连接MongoDB

  • 打开cmd 输入mongo 连接MongoDB,出现 >

数据库(database)

  • 数据库是一个仓库,在仓库中可以存放集合。
    • 集合(collection):集合类似于数组,在集合中可以存放文档
      • 文档(document):文档是数据库中的最小单位,我们存储和操作的内容都是文档
        • 在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合
数据库的服务器
  • 服务器用来保存数据
数据库的客户端
  • 客户端用来操作服务器,对数据进行增删改查的操作。
    • mongo 用来启动客户端

基本指令

show dbs // 显示当前所有数据库
use 数据库名 // 进入到指定数据库中
db // 表示当前所处的数据库
show collections // 显示数据库中所有集合

数据库的 CRUD(增删改查)的操作

向数据库中插入文档(增)

  • db.<collection>.insert(doc)
    • 向集合中插入一个文档
    • 例子:向test数据库中的,stus集合中插入一个新的学生对象
      • {name: "码农权", age: 18, gender: 男}
      • db.stus.insert()
  • db.<collection>.find()
    • 查询当前集合中的所有文档
查询
  • db.<collection>.find()
    • find() 用来查询集合中所有符合条件的文档
    • find() 可以接受一个对象作为条件参数
      • {} 表示查询集合中所有的文档
      • {属性:值} 查询属性是指定的文档
    • find() 返回的是一个数组
  • db.<collection>.findOne()
    • 用来查询集合中符合条件的第一个文档
    • findOne() 返回的是文档对象
  • db.<collection>.find().count()
    • 查询所有结果的数量
  • db.<collection>.find().limit()
    • 设置显示数据的上限
  操作符:
    $lt
    $gt
    $or
  例如:查询numbers集合中num>10的数据
  db.numbers.find({
    num: {
      $gt: 10
    }
  })
   查询工资小于1000或大于2500的员工
    db.emp.find({
      $or: [
        {
          salary: {
            $lt: 1000
          }
        },
        {
          salary: {
            $gt: 2500
          }
        }
      ]
    })
  • db.<collection>.find().skip()
    • 用于跳过指定数量的数据
  // limit() 和skip() 这两个函数可以配合分页
  skip( ( 页码-1 ) * 每页显示的条数).limit(每页显示的条数) 
  查询文档时、默认情况是按照_id的值进行排列(升序),在查询时,可以在第二个参数的位置来设置查询结果的 投影(展示想展示的信息,、0不展示,1展示)
    sort() 可以用来指定文档的排序规则,sort() 需要传递一个对象指定排序规则 1升序 0降序
      例如该集合
        _id: 001 name: 张三 score: 70
        _id: 002 name: 李四 score: 80
        _id: 003 name: 王五 score: 75
      需求:查询 students集合中 显示name和score 并将分数(score)进行升序
        db.students.find({},{
          _id: 0,
          name: 1,
          score: 1
        }).sort({
          score: 1
        })
    • MongoDB支持直接通过内嵌文档的属性进行查询,如果要查询内嵌文档则可以通过 . 的形式来匹配,如果要通过内嵌文档来对文档进行查询,此时属性名必须使用引号
      例如以下结构
      {
        "_id" : ObjectId("622f4e30a890791dcc0769d8"),
        "hobby" : {
          "cities" : ["beijing", "hanghai", "shenzhen"],
          "movies" : ["sanguo", "hero"]
        }
      }
      需求:查询喜欢电影 hero 的文档
      db.collection.find({"hobby.movies" : "hero"})
    
修改
  • db.<collection>.update(查询条件,新对象)
    • update() 默认情况下会使用新对象替换掉旧的对象
    • 如果需要修改指定的属性,而不是替换,需要使用“修改操作符”来完成修改
      • $set 可以用来修改文档中的指定属性
      • $unset 可以用来删除文档指定属性
      • $push 向数组中添加一个新的元素
      • $addToSet 向数组中添加一个新元素,如果数组中已经存在该元素,则不会加
      • $inc 自增
  为分数低于80分的同学增加20分
  db.students.update({
    score: {
      $lt: 80
    }
  }, {
    $inc: {
      score: 20
    }
  })
  • update()默认只会修改一个 和 updateOne一样的
  • db.collection.updateMany()
    • 同时修改多个符合条件的文档
  • db.collection.updateOne()
    • 修改一个符合条件的文档
删除
  • db.<collection>.remove()
    • 删除符合条件的所有文档(默认情况下会删除多个)
      • 如果remove() 第二个参数传递一个true,则只会删除一个
  • db.<collection>.deleteOne
    • 删除符合条件的一个文档
  • db.<collection>.deleteMany
    • 删除符合条件的所有文档
  • db.<collection>.drop()
    • 删除集合
  • db.dropdatabase()
    • 删除数据库
posted @ 2022-03-12 00:58  HuangBingQuan  阅读(41)  评论(0编辑  收藏  举报