MongoDB增删改查命令+高级查询+备份恢复

数据库的基本命令


  1. show dbs 展示当前所有数据库
  2. use db_name 切换数据库
  3. db.dropDatabase() 删除数据库
  4. db当前数据库

集合的基本命令


  1. db.createCollection(name, options)
  • db.createCollection(“stu”, {capped:true, size:10})

capped:默认值为false不设置上限
size:表示上限打下

  1. db.collectionName.drop()删除集合
  2. show collections() 展示当前数据库所有集合

可存储的数据类型


  1. Object ID:_id保证每个文档的唯一性,没有指定_id,mongodb会自动生成。
  2. String
  3. Integer
  4. Double
  5. Arrays
  6. Object
  7. Null
  8. Timestamp
  9. Date

可存储的数据类型


  1. 插入数据
db.collection.insert({'name':'alice','age':10})//如果插入已有的_id会报错
db.collection.save()//如果插入已有的_id会更新数据,不存在则插入
  1. 查找数据
db.collection.find()
  1. 更新
db.collection.update(更新条件,更新字段值, {multi:Boolean})
ex:
db.test.update({'name':'alice'},{'name':'bob'})//替换后别的键消失,只有name
db.test.update({'name':'alice'},{$set:{'name':'bob'}})//替换指定键
db.test.update({'name':'alice'},{$set:{'name':'bob'}},{multi:true})//multi替换满足条件的所有元组
  1. 删除
db.collection.remove(删除条件,{justOne:Boolean})
justOne等于true只删除满足条件的一条数据,false删除满足条件的所有数据,默认为false。

高级数据查询


  1. 数据查询
  • 方法find():查询满足条件的所有结果
    db.collection.find({条件})
  • 方法findOne():查询,只返回一个
    db.collection.findOne({条件})
  • 方法pretty():将结果美化
    db.collection.find({条件}).pretty()//能够展开对象
  1. 比较运算符
  • 等于:默认等于条件
  • 小于:$lt(less than)
  • 小于等于:$lte(less than equal)
  • 大于:$gt(greater than)
  • 大于等于:$gte
  • 不等于:$ne
ex: db.stu.find({age:{$gte:18}})
  1. 范围运算符
  • $in:判断是否在某个范围内
ex:db.stu.find({age:{$in:[18,28,38]}})
  1. 逻辑运算符
  • and:在json中写多个条件即可
查询年龄大于或等于18,并且性别为true的学生
db.stu.find({age:{$gte:18},gender:true})
  • or:使用$or,值为数组,数组每个元素为json
查询年龄大于18或性别为false
db.stu.find($or:[{age{$gt:18}},{'gender':true}])
查询年龄大于18或性别为男士,并且姓名是郭静
db.stu.find({$or:[{age:{$gt:18}},{'gender':'true}],'name':'郭静'})
  1. 支持正则表达式
  • 使用//或$regex编写正则表达式
db.products.find({sku:/^abc/})
db.products.find({sku:{$regex:'789$'}})
  1. limit和skip
  • 方法limit():用于读取指定记录的数量
db.collection.find().limit(number)
查询2条学生信息
db.stu.find().limit(2)
  • 方法skip():用于指定跳过的记录数量
db.collection.find().skip(number)
db.stu.find().skip(2)
  • 同时使用
建议先skip后在使用limit
db.stu.find().skip(2).limit(2)
  1. 自定义查询-写JS函数
    使用$where后面写一个函数,返回满足条件的数据
查询年龄大于30的学生
db.stu.find({
$where:funciton(){
return this.age>30}
})
  1. 投影-选择返回结果的字段
    在查询到的返回结果中,只选择必要的字段
db.collection.find({},{字段名称:1,...})
参数为字段与值,值为1表示显示,为0不显,为0一般不需要写,否者会报错,_id属性除外
db.stu.find({},{_id:0,name:1,gender:1}
  1. 排序
    方法sort(),用于对集合进行排序
db.collection.find().sort({字段:1,...})
参数1为升序
参数-1为降序
例:根据性别降序,再根据年龄升序
db.stu.find().sort({gender:-1,age:1})
  1. 统计返回的个数
    两种方式:
db.collection.find({条件}).count()
db.collection.count({条件})
  1. 消除重复
db.collection.distinct('去重字段',{条件})
例:年龄大于18岁的学生来自哪里
db.stu.distinct('hometown',{age:{$gt:18}})

数据库的备份和恢复


  1. 备份语法:
mongodump -h dbhost -d dbname -o -dbdirectory
-h: 服务器地址,也可以指定端口号
-d:需要备份的数据库的名称
-o:备份的数据存放的位置,此目录中存放着备份出来的数据
mongodump -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak
本地备份不需要指定-h

在这里插入图片描述
2. 数据恢复

mongorestore -h dbhost -d dbname -o -dbdirectory
-h: 服务器地址,也可以指定端口号
-d:需要恢复的数据库的实例
--dir:备份的所在的位置
mongorestore -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak

在这里插入图片描述


发布了12 篇原创文章 · 获赞 1 · 访问量 800

猜你喜欢

转载自blog.csdn.net/qq_39249347/article/details/104249632