NoSQL之MongoDB的使用

1. 进入bin目录下运行mongo.exe

2. mongodb数据库的操作命令

查看当前数据库:db
查看所有的数据库:show dbs/show databases
切换数据库:use db_name
删除当前的数据库:db.dropDatabase()

mongodb集合的命令:
不手动创建集合:向不存在的集合中第一次加入数据时,集合会被创建出来
手动创建集合:
db.createCollection(name,options)
db.createCollection(“stu”)
db.createCollection(“sub”,{capped:true,size:10})

判断是否是固定大小集合:
db.集合名.isCapped()

查看集合:show collections
删除集合:db.集合名称.drop()

3. mongodb 的增删改查

插入数据:db.集合名.insert(document)

查询数据:db.集合名称.find() 查询所有
查询数据,db.集合名.findOne{()} # 只返回第一个,
查询数据:db.集合名.find().pretty() # 将查询的结果格式化,不能和findOne()一起使用

比较运算符:
等于:默认是等于运算
小于:$lt (less than)
小于等于:$lte (less than equal)
大于:$gt (greater than)
大于等于:$gte (greater than equal)
不等于:$ne

逻辑运算符:

# 1. 查询年龄大于或等于18,并且性别为true的学生
db.stu.find({age:{$gte:18},gender:true})
# 2. 查询年龄大于18,或性别为false的学生
db.stu.find({$or:[{age:{$gt:18}},{gender:false}]})
# 3. 查询年龄大于18或性别为男生,并且姓名是郭靖
db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:'gj'})
# 4. 查询年龄为18、28的学生
db.stu.find({age:{$in:[18,28,38]}})

正则表达式:

# 5. 查询sku以abc开头的数据
db.products.find({sku:/^abc/})
# 6. 查询sku以789结尾的数据
db.products.find({sku:{$regex:'789$'}})

自定义函数查询:

# 查询年龄大于30的学生
db.stu.find({
  $where:function() {
  return this.age>30;
  }
})

limit():用于读取指定数量的文档
skip():用于跳过指定数量的文档

db.stu.find().skip(5).limit(4)

投影:(只显示想要的数据)

# 参数为字段与值,值为1表示显示,值为0不显示,特别注意:对于_id列默认是显示的,如果不需要显示需要明确设置为0
db.stu.find({},{_id:0,name:1,gender:1})

sort()对集进行排序:

# 参数1为升序排序列,参数-1为降序排序列
# 根据性别降序,再根据年龄排序
db.stu.find().sort({gender:-1,age:1})

count()统计个数:

db.stu.find({gender:true}).count()
db.stu.count({age:{$gt:20},gender:true})

distinct() 去重:

db.stu.distinct(‘hometown’,{age:{$gt:18}})

保存:
db.集合名称.save(document)
如果⽂档的_id已经存在则修改, 如果⽂档的_id不存在则添加

更新:

db.stu.update({name:'hr'},{name:'mnc'}) # 更新一条
db.stu.update({name:'hr'},{$set:{name:'hys'}}) # 更新一条
db.stu.update({},{$set:{gender:0}},{multi:true}) # 更新全部

删除:
db.集合名.remove({query}, {justOne:})

  • 参数query:可选,删除的文档的条件
  • 参数justOne:可选,如果设为true或1,则只删除一条,默认false,表示删除多条

索引
作用:加快查询速度,去重

# 创建索引, 1表示升序, -1表示降序
db.collection_name.ensureIndex({name:1})
# 查看索引
db.collection_name.getIndexes()
# 创建唯一索引
db.collection_name.ensureIndex({“name”:1},{“unique”:true})
# 删除索引
db.collection_name.dropIndex({‘索引名称’:1})
# 建立复合索引
db.collection_name.ensureIndex({字段1:1,字段2:1})

备份和恢复

  • 备份:mongodump -h dbhost -d dbname -o dbdirectory
  • 恢复:mongorestore -h dbhost -d dbname --dir dbdirectory

-h: 服务器地址, 也可以指定端⼝号
-d: 需要备份的数据库名称
-o: 备份的数据存放位置, 此⽬录中存放着备份出来的数据

mongodump -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak

mongorestore -h 192.168.196.128:27017 -d test2 --dir ~/Desktop/test1bak/test1

权限管理

# 在admin用户数据库上创建普通用户或root用户
# 在admin上创建python1用户,python1用户的权限有两个,一个在dbname1上的只读,另一个是在dbname2上的读写
use admin
db.createUser({"user":"python1","pwd":"python1",roles:["root"]})
db.createUser({"user":"python1","pwd":"python1",roles:[{"role":"read","db":"dbname1"},{"role":"radewrite""db":"dbname1"}]})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值