MongoDB高级应用之数据转存与恢复(5)
1、MongoDB索引
1.1、创建索引
db.books.ensureIndex{{number:1}}
创建索引同时指定索引的名字
db.books.ensureIndex({number:1},{name:"book_"})
1.2、索引使用需要注意的地方
1)创建索引的时候注意1是正序创建索引-1是倒序创建索引
2)索引的创建在提高查询性能的同事会影响插入的性能 对于经常查询少插入的文档可以考虑用索引
3)符合索引要注意索引的先后顺序
4)每个键全建立索引不一定就能提高性能呢 索引不是万能的
5)在做排序工作的时候如果是超大数据量也可以考虑加上索引 用来提高排序的性能
1.3、唯一索引
解决文档books不能插入重复的数值
1.4、剔除重复值
#则插入相同的name值会报错
db.books.ensureIndex({name:-1},{unique:true})
如果建议唯一索引之前已经有重复数值如何处理
#剔除重复数值
db.books.ensureIndex({name:1},{name:"book_",unique:true,dropDups:true})
1.5、后台执行创建索引
为了解决创建索引锁表的问题,在不影响查询功能,可以在后台运行
db.books.ensureIndex({name:1},{background:true})
1.6、强制查询已经建立好的索引
#后一个name为索引名,正序倒序依据建立索引的规则,否则会报错
db.books.find({name:"323book"}).hint({name:1})
1.7、在shell查看数据库已经建立的索引
db.system.indexes.find()
db.system.namespaces.find()
1.8、查询索引信息和查询状态信息
db.books.find({name:"123book"}).explain()
1.9、批量和精确删除索引
db.runCommand({dropIndexes : "books" , index:"name_-1"})
db.runCommand({dropIndexes : "books" , index:"*"})
2、二维索引
建立二维索引
#默认会建一个[-108,108]的范围
db.map.ensureIndex({gis:"2d"},{min:-1,max:201})
3、MongoDB数据转存及恢复
3.1、导出数据(中断其他操作)
使用mongoexport命令行
-d指明使用的库
-c指明要导出的表
-o指明要导出的文件名
-csv指定导出的csv格式
-q过滤导出
--type< json|csv|tsv>
把数据好testdb中的persons导出
mongoexport -d testdb -c persons -o D:/persons.json
导出其他主机数据库的文档
mongoexport --host 192.168.0.16 --port 37017
3.2、导入数据(中断其他操作)
mongoimport --db testdb --collections persons --file d:/persons.json
3.3、运行时备份 mongodump.exe
API: http://docs.mongodb.org/manual/reference/mongodump
mongodump --host 127.0.0.1:27017 -d testdb -o d:/testdb
3.4、运行时恢复 mongorestore.exe
API:http://docs.mongodb.org/manual/reference/mongorestore
恢复数据库
db.dropDatabase()
mongorestore --host 127.0.0.1:27017 -d testdb -directoryperdb d:/testdb/testdb
MongoDB是文件数据库这其实就可以用拷贝文件的方式进行备份
3.5、上锁和解锁
db.runCommand({fsync:1,lock:1}) #上锁
db.currentOp() #解锁
3.7、数据修复
当停电等不可逆转灾难来临的时候,由于mongodb的存储结构导致,会产生垃圾数据,在数据恢复以后这垃圾数据依然存在,这是数据库,可以提供一个自我修复的能力.使用起来很简单
db.repairDatabase()
本文为“Tom弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!
如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。
原创不易,坚持很酷,都看到这里了,小伙伴记得点赞、收藏、在看,一键三连加关注!如果你觉得内容太干,可以分享转发给朋友滋润滋润!
MongoDB高级应用之数据转存与恢复(5)的更多相关文章
- 【mongoDB高级篇③】综合实战(1): 分析国家地震数据
数据准备 下载国家地震数据 http://data.earthquake.cn/data/ 通过navicat导入到数据库,方便和mysql语句做对比 shard分片集群配置 # step 1 mkd ...
- DataBase MongoDB高级知识
MongoDB高级知识 一.mongodb适合场景: 1.读写分离:MongoDB服务采用三节点副本集的高可用架构,三个数据节点位于不同的物理服务器上,自动同步数据.Primary和Secondary ...
- MongoDB高级知识
MongoDB高级知识 一.mongodb适合场景: 1.读写分离:MongoDB服务采用三节点副本集的高可用架构,三个数据节点位于不同的物理服务器上,自动同步数据.Primary和Secondary ...
- MongoDB 高级教程
MongoDB 关系 MongoDB 的关系表示多个文档之间在逻辑上的相互联系. 文档间可以通过嵌入和引用来建立联系. MongoDB 中的关系可以是: 1:1 (1对1) 1: N (1对多) N: ...
- MongoDB学习笔记-06 数据库命令、固定集合、GridFS、javascript脚本
介绍MongoDB支持的一些高级功能: 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一 ...
- MongoDB高级查询用法大全
转载 http://blog.163.com/lgh_2002/blog/static/440175262012052116455/ 详见官方的手册: http://www.mongodb.org/d ...
- DataBase MongoDB高级知识-易使用
MongoDB高级知识-易使用 mongodb是一个面向文档的数据库,而不是关系型数据库.不采用关系模型主要是为了获取更好的扩展性.当然还有其他的一些好处. 与关系型数据库相比,面向文档的数据库不再有 ...
- DataBase MongoDB高级知识-易扩展
MongoDB高级知识-易扩展 应用程序数据集的大小正在以不可思议的速度增长.随着可用宽带的增长和存储器价格的下跌,即使是一个小规模的应用程序,需要存储的数据也可能大的惊人,甚至超出了很多数据库的处理 ...
- mongoDB高级查询$type4array使用解析
今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题. $type符号: $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. 下面是mong ...
随机推荐
- 【Java基础】ArrayList初始化操作
要用60个零初始化列表,请执行以下操作: List<Integer> list = new ArrayList<Integer>(Collections.nCopies(60, ...
- HTML DOM 对象 - 方法和属性
一些常用的 HTML DOM 方法: getElementById(id) - 获取带有指定 id 的节点(元素) appendChild(node) - 插入新的子节点(元素) removeChil ...
- 【C/C++】例题3-6 环状序列/算法竞赛入门经典/数组和字符串
[字典序比较] 对于两个字符串,比较字典序,从第一个开始,如果有两位不一样的出现,那么哪个的ASCII码小,就是字典序较小.如果都一样,那么短的小. [题目] 输入一个环状串,输出最小的字典序序列. ...
- uWSGI和WSGI之间的关系
一.WSGI 协议 WSGI:是一种协议规范,起到规范参数的作用,就像告诉公路一样,规定超车靠右行,速度不低于90km/h,等.但这一切都是对双方进行沟通,比如,重庆到武汉这条高速路,这儿重庆和武汉就 ...
- Table.FillDown填充Table.Fill…(Power Query 之 M 语言)
数据源: 任意列中包含空单元格 目标: 将空单元格填充为其上或其下单元格中的内容 操作过程: 选取指定列>[转换]>[填充]>[向下] 选取指定列>[转换]>[填充]&g ...
- C51单片机中断实验
实验要求: 要求通过中断方式检测有无按键 判断哪个按键(编号0-9),并且在数码管上显示对应的0-9 代码部分 #include<reg51.h> char led_mod[]={0x3f ...
- CF706A Beru-taxi 题解
Content 有一个人在点 \((a,b)\) 等出租车.已知他周围共有 \(n\) 辆出租车,其中第 \(i\) 辆车在点 \((x_i,y_i)\) 上,速度为 \(v_i\).这个人想打能让他 ...
- CF1036D Vasya and Arrays 题解
Content 给定两个长度分别为 \(n\) 和 \(m\) 的数列 \(A,B\).你需要将两个数列都恰好分成 \(k\) 份,使得两个数列中第 \(i(i\in[1,k])\) 份的元素和对应相 ...
- WSL docker打通容器间通信和追加端口映射
最近在docker中搭建一个服务,需要有多个容器通信.这里简单记录一下如何在容器间进行通信,同时说一下已经存在的容器如何追加端口映射. 增加网桥 容器间通信的目的是不适用IP而是使用容器名称进行网络通 ...
- MySQL查找数据中相同的数据,并进行删除
查找表中多余的重复记录,重复记录是根据某个字段来判断 select * from 表名 where 字段 in (select 字段 from 表名 group by 字段 having count( ...