MongoDB数据库常用操作

MongoDB数据库常用操作

  • 1.查看所有的数据库
    • 格式: show databases;
    • 简写: show dbs;
  • 2.创建或者使用一个数据库
    • 格式: use 数据库名;
      • 当对应的数据库不存在的时候,表示创建该数据库
      • 如果数据库已经存在,表示使用该数据库
    • 注意:
      • 如果创建了一个新的数据库,而该数据库中没有数据,则使用show dbs查看的时候看不到,插入数据库后,即可查看到
      • 插入数据: db.student.insert({name:“Lucy”})
  • 3.查看当前使用的数据库
    • 格式: db 代表的是当前数据库
    • 或者 db.getName() 可以查看当前数据库的名字
  • 4.删除当前数据库
    • db.dropDatabase()
  • 5.帮助命令 help
  • 6.退出
    • exit

MongoDB数据库常用操作–集合的操作

  • 1.查看当前库中的所有集合(相当于关系型数据库的 表)
    • 格式: show collections;
  • 2.创建一个集合
    • 方式1:
      • db.createCollection(“集合名”)–集合名需要加上引号
      • 例:db.createCollection(“集合名”)
    • 方式2:
      • db.集合名.insert(数据)
      • 例:db.student2.insert({name:“张三”})
    • 区别:
      • 方式1是创建一个空的集合,如果集合已经存在,不会覆盖创建
      • 方式2:如果对应的集合不存在表示创建一个集合,并插入数据
      • 如果对应的集合存在,表示直接插入一条数据
  • 3.删除一个集合
    • 格式: db.集合名.drop()

MongoDB数据库常用操作–文档的操作

  • 1.插入数据(相当于关系型数据库表中一行数据 row)

    • 1.添加一个数据
      • 格式: db.集合名.insert(数据)
        • 数据: key-value的形式
        • 是bson格式, 与json格式一样
        • 格式:
          • 1.{key1:value,key2:value, keyN:value} – jsonObject
          • 2.[{key1:value,key2:value, keyN:value}, {key1:value,key2:value, keyN:value}] – jsonArray
          • 3.{key1:嵌套json数据,key2:value, keyN:value}
      • 示例:
        • db.student.insert({name:“LiSi”,age:18,address:“BeiJing”})
        • WriteResult({ “nInserted” : 1 })表示插入成功
        • 注意: mongodb插入数据时会默认生成一个 _id相当于关系型数据库中的主健
        • 如: “_id” : ObjectId(“5b8f45c12e3e35173c33f13c”)
    • 2.添加多个数据
      • 格式: db.集合名.insert([数据1,数据2,数据n])
      • 示例:
        • db.student.insert([{name:“TianQi”,age:16,address:“HeFei”}, {name:“WangWu”,age:22,address:“DongJing”}, {name:“ZhaoLiu”,age:20,address:“NanJing”}])
    • 3.插入数据 save 保存
      • 格式: db.集合名.save(数据) 使用方法与insert一致
        • 示例:
          • db.student.save({name:‘钱毅’,age:32,address:“江干”})
        • 区别:
          • db.student.save({ “_id” :ObjectId(“5b8f47d03d9b6b894071334b”),name:‘钱毅’})
          • 如果使用的是save,而且设置_id属性,且_id已经存在时save表示修改数据
          • db.student.insert({ “_id” :ObjectId(“5b8f47d03d9b6b894071334b”),name:‘周毅’})
          • 如果使用的是insert,而且设置_id属性,且_id已经存在时, 则insert会报错
  • 2.查询数据—结果是 bson的形式

    • 1.查询所有的数据
      • 格式: db.集合名.find()
    • 2.根据条件来查询数据
      • MySQL数据库: select 字段名, from 表 where 条件
      • MongoDB数据库格式: db.集合名.find(query,names)
        • 参数query 是查询条件
        • 参数names 是要展示的字段名
      • 注意:
        • query,names都是json的数据格式
        • query参数
          • 如: {age:22} 表示查询age=22的数据
        • names参数
          • 如: {name:1,age:1} 表示只显示name属性和age属性
        • 注意:如果没有names,则所有的属性及值都显示
          • 1表示显示, 0 表示不显示
      • 需求:查询年龄是22岁的人的姓名,地址
        • 例: db.student.find({age:22},{name:1,address:1})
    • 3.查询一条数据
      • 格式:
        • db.集合名.findOne(query,names)
      • 示例:
        • db.student.findOne({name:‘Lucy’})
      • 根据_id来查询
      • 示例:
        • db.student.findOne({"_id":ObjectId(“5b8f47d03d9b6b894071334a”)})
    • 4.格式化查询结果
      • 格式: db.集合名.find().pretty()
  • 3.数据的修改

    • MySQL数据库修改数据:
      • update 表名 set 字段名 = 属性值…where 条件
    • MongoDB格式:
      • db.集合名.update(query,set,{upsert:布尔类型,multi:布尔类型})
      • 参数都是json的格式
    • 1.query 查询条件
    • 2.set 要修改的属性和对应的属性值
      • 需求:
        • 将ZhaoLiu的地址改为滨江
      • 示例:
        • db.student.update({name:“ZhaoLiu”},{address:“滨江”})
          • 注意: 如果以以上方式修改,是将整个数据改为 {address:“滨江”},而不是只修改address属性只修该属性:
        • 正确的开启方式
        • db.student.update({name:“ZhaoLiu”},{$set:{address:“滨江”}})
      • 格式:db.集合名.update(query,{$set:{属性名:属性值}})
      • 其他修改数据的格式
        • 格式:db.集合名.update(query,{$inc:{属性名:值}})
        • 表示在某个属性上添加某个值
意外!!
	* 3. upsert 表示在修改数据的时候,如果查询条件没有找到对应的数据,
		- 是否将修改的内容当作新的数据添加到集合中
			- true 表示添加进来
			- false 表示不当作新数据添加进来
			- 默认是false
		- 例:
			- db.student.update({name:"LiLei"},{address:"九堡"},{upsert:true})
* 4.multi
	- 在修改数据时如果查询出了多条符合条件的数据,是否将多条数据全部进行修改
		- true 表示全部都修改
		- false 表示值修改匹配的第一条数据
		- 默认是false
	- 示例:
		- db.student.update({name:"Lucy"},{$set:{sex:"不明"}},{multi:true})
  • 4.删除数据
    • MySQL数据库格式:delete from 表名 where 条件
    • MongoDB数据库格式:
      • db.集合名.remove(query,{justOne:布尔值})
    • 示例:
      • db.student.remove({name:“LiLei”})
      • db.student.remove({name:“Lucy”},{justOne:true})
        • 注意:默认会将所有符合条件的数据都删除,
        • justOne表示是否只删除 第一条符合条件的数据
        • true 只删除一条, false表示全部删除, 默认为false

MongoDB数据库常用操作–查询条件

  • 1.比较运算符

    • $gt 大于
    • $lt 小于
    • $gte 大于等于
    • $lte 小于等于
    • $eq 等于 或者 :
    • $ne 不等于
    • 格式:
      • db.集合名.find({字段名:{运算符:值}})
    • 需求:
      • 查询年龄大于60的student
    • 示例:
      • db.student.find({age:{$gt:60}})
    • 需求:
      • 查询年龄在大于等于40且小于等于60的数据
    • 示例:
      • db.student.find({age:{$gte:40}})
  • 2.逻辑运算符

    • $and 且 或者 ,

      • 格式: db.集合名.find({条件1,条件2})
      • 格式2:db.集合名.find({$and:[{条件1},{条件2}]})
      • 需求:
        • 找出姓名是 TianQi 的 且 年龄是 22岁 的数据?
      • 示例:
        • db.student.find({name:“TianQi”,age:22})
      • 或者
        • db.student.find({$and:[{name:“TianQi”},{age:22}]})
      • 需求:
        • 查询年龄在大于等于20且小于等于22的数据
      • 错误写法: db.student.find({age:{KaTeX parse error: Expected 'EOF', got '}' at position 7: gte:20}̲,age:{lte:22}})
      • 正确写法:
        • db.student.find({age:{ g t e : 20 , gte:20, lte:22}})
        • db.newclass.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: and:[{age:{gte:18}},{age:{$lte:20}}]})
    • $or 或者

      • 格式:
        • db.集合名.find({$or:[{条件1},{条件2}]})
      • 需求:
        • 查询数年龄是 20 的或者 22 的
      • 示例:
        • db.student.find({$or:[{age:20},{age:22}]})
      • 需求:
        • 查询出年龄是20的且住在滨江的 或者 年龄22且住DongJing的
      • 示例:
        • (age = 20 and address=“滨江”) or (age = 22 and address=“DongJing”)
    • $not 非

      • 格式: db.集合名.find({$not:{条件1}})
  • 3.模糊运算符

    • 插入几条数据:
      • db.student.insert(
        [{name:‘张三’,age:22,address:“北京”,sex:“女”},
        {name:‘李四’,age:33,address:“南京”,sex:“女”},
        {name:‘王武’,age:44,address:“东京”,sex:“男”},
        {name:‘赵六’,age:55,address:“西京”,sex:“男”},
        {name:‘田七’,age:66,address:“中京”,sex:“男”}])
    • 格式:

      • db.集合名.find({字段名:/匹配的数据/})
      • 注意: / / 不需要将引号
    • 需求:

      • 查找出名字中包含 张 字的数据
    • 示例:

      • db.student.find({name:/张/})
    • /^字符/ 表示以某个字符开始的数据

    • /字符$/ 表示以某个字符结尾的数据

    • 需求: 查找出姓 赵 的数据

    • db.student.find({name:/^赵/})

    • db.student.find({name:/七$/})

  • 4.分页 ---- 关系: limit 值1,值2

    • limit(number) 表示读取指点数量的数据 相当于 值2

    • skip(position) 表示跳到指定下标位置开始读数据 注: 位置从 0 开始

    • db.student.find().skip(3)

    • db.student.find().limit(3)

    • 需求: 从第六条开始,获取3条数据

    • db.student.find().skip(6).limit(3)

    • 需求: 获取第n页的3条数据,

    • 格式: db.student.find().skip((n-1)*3).limit(3)

  • 5.排序 sort 字段名 升序/降序

    • 格式:
      • db.student.find().sort({字段名:1/-1})
      • 1: 表示升序
      • -1: 降序
    • 需求:
      • 按照年龄的升序排序
    • 示例:
      • db.student.find().sort({age:1})
  • 6.计算查询结果的数量

    • db.student.find().count()

猜你喜欢

转载自blog.csdn.net/qq_42690368/article/details/83541169