MongoDB常用语法,数据集合的导入导出,数据备份与恢复

一:语法

  • 数据库
show dbs;//查看所有的数据库
db;//查看当前窗口所在的数据库
use 数据库名;//如果数据库不存在,则创建数据库,否则切换到指定数据库。
注:show dbs执行结果没有看到test库,但是db查看当前库确是test库,因为test库中刚开始没有任何数据并且是在内存中的,有了数据后就会显示出来了(其他新创建的数据库也是如此)
db.dropDatabase();//删除当前数据库,默认为 test,故要切换到某个数据库下进行删除
  • 集合
显式创建集合:db.createCollection("demo");//创建一个名为demo的集合,创建完成后会返回 {"ok",1} json串
隐式创建集合:db.demo.insert({name:"hero1",id:1});//往demo集合中添加数据来创建集合,如果集合不存在就自动创建集合,返回:WriteResult({"nInserted":1})
show collections;//查看集合
db.demo.count();//统计集合demo中的数据数量
db.demo.drop();//删除集合demo
注:mongo中支持js,可通过js操作实现批零处理,如:for(var i=1;i<1000;i++){db.demo.insert({name:"hero"+i,id:0+i});}
固定集合
固定集合指的是事先创建而且大小固定的集合。
固定集合特性:固定集合很想环形队列,如果空间不足,最早的文档就会被删除,为新的文档腾出空间。一般来说,固定集合适用于任何想要自动淘汰过期属性的场景,没有太多的操作限制.
db.createCollection("collectionName",{capped:true,size:10000,max:100});//size指定集合大小,单位为KB,max指定文档数量
当文档数量上限时必须同时指定大小。淘汰机制只有在容量还没满时才会依据数量来工作。要是容量满了则会依据容量来工作。
  • 查询
固定条件查询:
注:mongodb中每条数据都有一个id,用来唯一标识一条数据,id由mongo本身来维护
db.demo.find();//查询集合中所有的数据
db.demo.find({id:7});//查询id为7的数据
db.demo.find({id:7},{name:1});
//查询id为7的数据,只返回name字段数据;两个大括号,前面的存查询条件,后面的存返回条件,返回条件字段1表示true,表示此字段返回,如果name后面的1改为0则表示不返回name字段,返回除name字段以外的其他字段
注意:如果设置返回字段有为0的已经表示查询所有除了某字段以外的所有字段就不能再设置某个字段为1了,有语法冲突
db.demo.find({id:7,name:"hero7"},{name:1,age:1});//查询id为7,name为hero7的数据,返回name和id字段
注:多条件查询此处是并列,但是如果多个条件都相同的话如{name:"hero7",name:"hero8"}则会只查询后一个条件的数据
db.demo.find({},{id:1});//查询所有的数据,返回id字段
db.demo.findOne();//查询集合的第一条数据
筛选查询:
gt(greater than)大于;lt(less than)小于;gte(greater then equal)大于等于;lte(less than equal)小于等于;ne(not equal)不等于
db.demo.find({id:{$gt:10}});//查询id大于10的数据
包含
db.demo.find({id:{$all:[1,2]}});//(包含。。并且包含。。)此处id是个数组,此方法查询所有id包含1和2的数据
db.demo.find({id:{$in:[1,2]}});//(包含。。或者包含。。)查询id中含有1或者2的数据
db.demo.find({id:{$nin:[1,2]}});//(不包含。。并且不包含。。)查询id中不含有1并且不含有2的数据
db.demo.find({$or:[{name:"hero1"},{id:{$in:[1]}}]});//(。。或者。。)查询name为hero1或者id包含1的数据
db.demo.find({$nor:[{name:"hero2"},{name:"hero3}]});//(既不也不)查询name不为hero2或者name不为hero3的数据
分页:
db.demo.find().skip(0).limit(10);//查询从0条开始,查询10条,skip()方法默认参数为 0 ,表示跳过的条数
排序:
db.demo.find().sort({id:1});//按照id升序排序,为-1的话表示降序排序
存在
db.demo.find({hight:{$exists:1}});//查询存在hight字段的数据
  • 删除
db.demo.remove({id:7,name:"hero7"});//删除id为7,name为hero7的数据
  • 更新
db.demo.update({id:12},{name:"jiji"});//本意为将id为12的数据中的name更新为jiji,但是实际效果是只是将id为12的满足条件数据的第一条整条数据覆盖为name:“jiji”
db.demo.update({id:15},{$set:{name:"bibi"}});//本意为将id为15的数据的name修改为bibi,但是实际效果是只修改了查询到的第一条数据
db.demo.update({id:15},{$set:{name:"bibi"}},1,1);//将id为15的数据的name修改为bibi
总共4个参数,第四个参数表示有多条数据符合筛选条件的话是否全部更改,默认为0只改第一条,改为1后表示全部更改
第3个参数1表示如果没有符合条件的记录是否新增一条记录,1表示新增,0表示不新增
如:db.demo.update({id:21},{$set:{name:"bibi"}},1,1);//如果不存在id为21的数据则增加一条,增加的数据为{id:12,name:”bibi”}
db.demo.update({id:12},{name:"aa"},{$inc:{id:-2}},1,1);//$inc表示使某个键值加减指定的数值,此处表示将name为aa的数据的id字段的值减2
db.demo.update({id:12},{name:"cc"},{$inc:{id:1}},0,1);//$unset用来删除某个键,此处表示删除name为cc的数据的id字段
  • 索引
mongo默认为每条数据的_id字段建索引
db.demo.ensureIndex({id:1});//为id字段建普通索引
db.demo.dropIndex({id:1});//删除id字段的索引
db.demo.ensureIndex({id:1},{unique:true});//为id字段建唯一索引,在为字段建了唯一索引后就不能再添加相同值的记录了
  • 导出
    • 注意:导入导出运行的其实是bin目录下的mongoexport.exemongoimport.exe所以做导入导出操作时无需启动mongo
    • 导出命令: mongoexport -h dbhost -d dbname -c collectionName -o output
-h :数据库地址,MongoDB 服务器所在的 IP 与 端口,如 localhost:27017

-d :指明使用的数据库实例,如 test

-c 指明要导出的集合,如 demo

-o 指明要导出的文件名,如C:/mongo/data/demo.json,注意是文件而不是目录,目录不存在时会一同新建,文件类型支持txt、xls、docs 等等
  • 导入
    • 无需启动mongo
    • 导入命令:mongoimport -h dbhost -d dbname -c collectionname 文件的地址全路径
-h : 数据库地址,MongoDB 服务器所在的 IP 与 端口,如 localhost:27017

-d :指明使用的库,指明使用的数据库实例,如 test

-c :指明要导入的集合,如 demo可以和导出时不一致,自定义即可,不存在时会直接创建。

本地的文件地址:事先导出好的 mongoDB 集合文件
  • 数据备份
    • 命令:mongodump -h dbhost -d dbname -o dbdirectory
-h:mongodb所在服务器地址,如 localhost:27017
-d:需要备份的数据库实例,如:test
-o:需要备份的数据存放的位置,例如:C:/data (如果没有则自动创建)
  • 数据恢复
    • 注意:恢复时要在退出mongo命令行状态下执行
    • 命令:mongorestore -h dbhost -d dbname -directoryperdb dbdirectory
-h:mongodb所在服务器地址,如 localhost:27017
-d:需要备份的数据库实例,如:test,此名称也可以和备份的时候不一样
-directoryperdb :备份数据所在的位置,例如:C:/data
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值