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"}]})