mongodb常用命令
1. 数据库操作
-
查看数据库
show databases
-
创建/选择数据库
use dbname
2. 集合操作
db.createCollection(name, options)
-
options是一个文档,用于指定集合的配置,选项参数是可选的,所以只需要到指定的集合名称,可以不手动创建集合,向不存在的集合中第一次加入数据是,集合就会被创建出来.
-
不限制集合大小
db.createCollection("stu")
-
限制集合大小
参数capped:默认值为false表示不设置上限,值为true表示设置上限
参数size:当capped值为true时,需要指定此参数,表示上限大小,当文档达到上限时,会将之前的数据覆盖,单位为字节
db.createCollection("class", { capped : true, size : 20 } )
-
查看当前数据库的集合
show collections
-
删除命令
db.集合名称.drop()
3. 数据类型
MongoDB中常用的几种数据类型:
-
Object ID:文档ID,每个文档都有一个属性,为_id,保证每个文档的唯一性,可以自己设置,不允许重复
-
String:字符串,最常用,必须是有效的UTF-8
-
Boolean:存储一个布尔值,true或false
-
Integer:整数可以是32位或64位,这取决于服务器
-
Double:存储浮点值
-
Arrays:数组或列表,多个值存储到一个键
-
Object:用于嵌入式的文档,即一个值为一个文档
-
Null:存储Null值
-
Timestamp:时间戳,表示从1970-1-1到现在的总秒数
-
Date:存储当前日期或时间的UNIX时间格式
4. 插入数据
-
不指定id参数(插入文档时,MongoDB会为文档分配一个唯一的ObjectId)
db.lab.insert({name:'lab'}) #插入数据
-
指定id等参数
db.lab.insert({_id:20190416,name:'lab'}) #插入数据
5. 数据操作
命令 | 解释 |
---|---|
db.coll_name.insert() | 插入数据 |
db.coll_name.save({ }) | 保存数据,若是没有此数据,则为插入 |
db.haha.update({ },{}) | 默认更改一个数据,将后面数据替换前面选定的数据及以后的数据(会发生数据丢失) |
db.haha.update({},{$set: {}},{multi:true}) | multi:true:更改全部,部分替换,不会丢失数据,只会更改选定的数据 |
db.haha.remove( { },{justOne:true} ) | justOne只删除一个,若是无justOne,则是全部删除 |
db.coll_name.find({}) | 显示所有数据 |
6. 比较运算符
符号 | 解释 |
---|---|
没有符号 | 默认是等于 |
$lt | 小于 |
$gt | 大于 |
$ lte | 小于或等于 |
$gte | 大于或等于 |
$ ne | 不等于 |
db.hero.find({age:{$ne:18}}) #查询年龄不等于18的数据
db.hero.find({age:{$gt:18}}) #查询年龄大于18的数据
db.hero.find({age:{$gte:18}}) # 查询年了那个大于或等于18 的数据
7. 逻辑运算符
-
$in 判断是否在条件里面 $nin 判断不在里面
-
查询在范围里面的数据
db.lab.find({age:{$in:[13,18]}}) #查询age=13和age=18的数据
-
查询不在范围里面的数据
db.lab.find({age:{$nin:[13,18]}}) #查询age=13和age=18的数据
8. 逻辑运算符
-
没有end 直接用,隔开就是并且的意思
db.hero.find({age:{$gt:18},gender:0})
-
or 或者
db.hero.find({$or:[{age:{$gt:18}},{name:'武则天'}]})
-
练习
db.hero.find({$or:[{age:{$gt:18}},{name:'亚瑟'}],gender:1})
9. 正则表达式
-
第一种表示方法 /regex/
db.xixi.find({name:/789$/})
-
第二种表示方法
db.xixi.find({name:{$regex:'789$'}})
10. limit 和skip
-
limit 限制结果数量
db.hero.find().limit(2) #限制两条结果
-
skip 跳过数量
db.hero.find().skip(3)
-
综合显示
db.hero.find().skip(2).limit(3).pretty()
11. 投影
-
在结果中显示指定的字段
db.集合名.find({},{字段1:1,字段2:0})
1显示字段,0不显示字段,默认为显示
db.hero.find({},{name:1,_id:0})
12. 排序
-
db.集合名.find().sort({字段:1}) ,1表示升序,-1降序
db.hero.find().sort({age:1})
13. 统计
db.coll_name.find({字段1,值}).count()
或者 db.coll_name.count({字段1,值})
db.hero.find({age:18}).count()
db.hero.count({age:{$gt:23}})
14. 消除重复
db.coll_name.distinct({字段1,值})
db.hero.distinct('age')
db.hero.distinct('age',{age:{$gt:18}})
15. 自定义函数(略少)
db.hero.find({$where: function() {return this.age<=18}})
16. 备份与恢复
-
备份/恢复集合
/d 表示数据库 /c 表示集合 /o 表示保存
mongoexport /d test /c hero /o xxx.json # 备份 mongoimport /d test /c hero1 /file xxx.json #还原
-
备份/还原数据库
#备份 mongodump -h 数据库主机地址 -d 数据库名 -o 路径 -h:数据库主机地址 -d:需要备份的数据库名称 -o:备份的数据存放位置,此目录中存放着备份出来的数据
#还原 mongorestore -h dbhost -d dbname --dir dbdirectory -h:服务器地址,如果不是本地恢复,可以用ip:端口 -d:需要恢复的数据库 --dir:备份数据所在位置
mongodump -d test -o ./ #备份 mongorestore -d mytest --dir ./test #还原