mongodb常见指令以及备份恢复

目录

mongodb常见指令

备份和恢复


mongodb常见指令

1. 创建数据库mydb,并将库作为当前库 

use mydb

2. 查看所有的数据库 
show dbs ;
show databases ;

查看当前数据库
db;

3.插入数据 (几乎所有的操作都是以db开头)
db.mydb.insert({name:'张无忌'}) ;

4.查看当前数据库所有的集合
show tables;

show collections ;

5.查看所有的记录
db.mydb.find() ;

6.删除集合
db.mydb.drop() ;

7.删除当前数据库
db.dropDatabase() ; 

8.清屏指令
cls

9.插入多条数据
db.mydb.insert({name:'张无忌',age:23}) ; 
db.mydb.insert({name:'郭靖',age:22,address:"桃花岛"}) ; 
db.mydb.insert({name:'乔峰',age:28,address:'丐帮'}) ; 
db.mydb.insert({name:'令狐冲',age:25,address:{pro:'陕西',city:'西安'}}) ; 
db.mydb.insert({name:'胡斐',age:31}) ; 
db.mydb.insert({name:'杨过',age:27,sex:'男'}) ; 

10.查看所有的记录
db.mydb.find() ;

11.查找名字是张无忌的人的信息
db.mydb.find({name:'张无忌'})

12.查询id的值是60719e3301ce82b7672e2381
db.mydb.find({_id:ObjectId('60719e3301ce82b7672e2381')})

13.查询年龄>25的人
db.mydb.find({age:{$gt:25}})

14.查询年龄小于25的人
db.mydb.find({age:{$lt:25}})

15.查询年龄>=25的人    ($lte 表示 <=)
db.mydb.find({age:{$gte:25}})

16.查询名字是杨过,年龄是27的人
注意:此时先插入一条数据:db.mydb.insert({name:'杨过',age:35,sex:'男'}) ;
db.mydb.find({name:'杨过',age:27})

17.查询名字是杨过或者年龄是27的人
db.mydb.find({$or:[{name:'杨过'},{age:27}]})

18.查询名字不是杨过的人
db.mydb.find({name:{$ne:'杨过'}})

19.显示数据的部分属性:只显示姓名,年龄
db.mydb.find({},{name:1,age:1,_id:0})

20.显示不同的姓名 :  distinct
db.mydb.distinct("name") 
获取返回的数组中的元素
var x = db.mydb.distinct("name") 
x[0]    获取到了张无忌
x.length   获取到数组的长度

21.显示地址在桃花岛或者丐帮的人: $in
db.mydb.find({address:{$in:['丐帮','桃花岛']}})

22.显示地址不在桃花岛或者丐帮的人: $nin
db.mydb.find({address:{$nin:['丐帮','桃花岛']}})

23.显示家在西安的人

先插入两条数据
db.mydb.insert({name:'张三丰',age:36,address:{pro:'陕西',city:'西安'}}) 
db.mydb.insert({name:'扫地僧',age:40,address:{pro:'河北',city:'石家庄'}}) 

db.mydb.find({"address.city": '西安'}) 

24.只想查询第一条记录
db.mydb.findOne() 
db.mydb.findOne({"address.city": '西安'}) 

25.格式化显示的结果
db.mydb.find().pretty() 

26.排序 sort({"属性名":1}), 1表示升序  -1降序
按照年龄进行排序
db.mydb.find({},{name:1,age:1}).sort({"age":1}) 

此时插入数据 db.mydb.insert({name:'杨铁心',age:31,sex:'男'}) 
根据多个属性进行排序
db.mydb.find({},{name:1,age:1}).sort({"age":1,"_id":-1}) 

27.查询集合中有多少条文档  count() 
db.mydb.count() 

28.限制查询:limit(m)  m代表了截取几条文档
显示年龄最大的两个人
db.mydb.find({}).sort({"age":-1}).limit(2)

29.定位方法(跳过): skip(m)  m表示跳过m条数据
db.mydb.find({}).sort({"age":-1}).skip(2).limit(2) 

30.求余数运算: $mod  $icr
查询年龄对10取余数为3的人
db.mydb.find({age:{$mod:[10,3]}})      //mod取余

31.模糊查询:采用正则表达式查询   / /  ^开头   $表示结尾
查询所有姓张的人
db.mydb.find({name:/张/})

32.$exists: 存在与否
查询所有没有地址的人
db.mydb.find({address:{$exists:false}})

33.$all : 针对数组的查询,表示文档中有$all指定的所有值就满足条件
db.mydb1.insert({"fruit":["苹果","橘子","香蕉"]}) 
db.mydb1.insert({"fruit":["苹果","菠萝"]}) 
db.mydb1.insert({"fruit":["橘子","菠萝"]}) 

查询含有苹果的文档 : 表示含有苹果即可。
db.mydb1.find({"fruit":"苹果"}) 
查询含有苹果和橘子的文档 :表示两种水果都要有
db.mydb1.find({"fruit":{$all:["苹果","橘子"]}}) 

34.查询有两种水果的文档  $size :用于数组
db.mydb1.find({"fruit":{$size:2}})
注意:$size 只能用于等于具体的值。不能用于范围。比如查询水果种类 > 2的情况,就不能写$size : {$gt:2}样子
建议的方式就是给每个文档在插入时多加一个字段,存储数组的长度即可。

35.在数组中存储json对象
db.mydb2.insert({"fruit":[{"name":"苹果","type": 1},{"name":"橘子","type": 2},{"name":"香蕉","type": 1}]}) 
db.mydb2.insert({"fruit":[{"name":"苹果","type": 1},{"name":"菠萝","type": 3}]}) 
db.mydb2.insert({"fruit":[{"name":"橘子","type": 2},{"name":"菠萝","type": 3}]}) 
db.mydb2.insert({"fruit":{"name":"苹果","type": 1}})

查询类型为1的水果 :只要包含有类型为1的水果即可满足条件。
db.mydb2.find({"fruit.type":1})

36.查询第二个水果的类型是2的文档
db.mydb2.find({"fruit.1.type":2}) 

37.希望更改张无忌的名字是张翠山
db.mydb.update({"name":"张无忌"},{"name:":"张翠山"}) 这种写法会覆盖所有数据,其他属性相关数据就没有了。
db.mydb.update({name:"乔峰"},{$set:{address:'辽东'}});    $set表示只修改指定的属性
db.mydb.update({name:"令狐冲"},{$set:{age:23,address:'陕西咸阳'}});


db.mydb.update({name:"黄蓉"},{$set:{age:23}},1,0)

也可以试试这句比较一下 db.mydb.update({name:"黄蓉"},{$set:{age:20}},0,0)

(补充说明:

db.mydb.update( criteria, objNew, upsert, multi )
criteria:哪些记录需要更新,类似于SQL update(where)子句
objNew:更新的操作符等$,$inc,类似于SQL update(set)子句
upsert:插入,如果不存在update记录,是否插入objNew,默认false不插入
multi:默认false,只更新找到的第一条记录,为true更新查找出来的多条记录)

38.删除:删除杨铁心的文档
db.mydb.remove({name:'杨铁心'}) 

39.删除某个文档的某个指定的属性: $unset
db.mydb.update({"name":"令狐冲"},{$unset:{"address":1}},0,1)  

40.给指定的值添加  $inc
给所有人的年龄添加5岁
db.mydb.update({},{$inc:{age:5}},0,1)    // 1指定所有人,如果第一条记录没有age,默认加5后为age:5

备份和恢复


备份的数据库,会放到安装目录的mongodb/bin/dump目录下

备份所有的数据库:dos窗口在mongodb客户端输入 mongodump指令


备份指定的数据库,在dos窗口
  情况一:如果在任意目录(不在备份的目录下),备份的结果是没有dump目录,恢复的时候需要手动创建dump目录,将数据移动到dump目录下。
  情况二:如果在dos窗口直接在备份目录下,那么备份的结果就有demp目录。
    
建议在备份目录下进行备份: 

 D:\mongodb\bin> mongodump -d mydb    备份到d盘下的mongodb\bin目录下.

恢复
 D:\mongodb\bin> mongoresotre --drop 

导入导出:(和备份还原没什么区别)都需要在dos客户端
导出:
 D:\mongodb\bin> mongoexport -d  mydb -c mydb mydb.json      -d是指定数据库,-c指定集合, mydb.json是导出的文件名
导入:
 D:\mongodb\bin> mongoimport -d mydb -c mydb mydb.json   


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值