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)的更多相关文章

  1. 【mongoDB高级篇③】综合实战(1): 分析国家地震数据

    数据准备 下载国家地震数据 http://data.earthquake.cn/data/ 通过navicat导入到数据库,方便和mysql语句做对比 shard分片集群配置 # step 1 mkd ...

  2. DataBase MongoDB高级知识

    MongoDB高级知识 一.mongodb适合场景: 1.读写分离:MongoDB服务采用三节点副本集的高可用架构,三个数据节点位于不同的物理服务器上,自动同步数据.Primary和Secondary ...

  3. MongoDB高级知识

    MongoDB高级知识 一.mongodb适合场景: 1.读写分离:MongoDB服务采用三节点副本集的高可用架构,三个数据节点位于不同的物理服务器上,自动同步数据.Primary和Secondary ...

  4. MongoDB 高级教程

    MongoDB 关系 MongoDB 的关系表示多个文档之间在逻辑上的相互联系. 文档间可以通过嵌入和引用来建立联系. MongoDB 中的关系可以是: 1:1 (1对1) 1: N (1对多) N: ...

  5. MongoDB学习笔记-06 数据库命令、固定集合、GridFS、javascript脚本

    介绍MongoDB支持的一些高级功能: 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一 ...

  6. MongoDB高级查询用法大全

    转载 http://blog.163.com/lgh_2002/blog/static/440175262012052116455/ 详见官方的手册: http://www.mongodb.org/d ...

  7. DataBase MongoDB高级知识-易使用

    MongoDB高级知识-易使用 mongodb是一个面向文档的数据库,而不是关系型数据库.不采用关系模型主要是为了获取更好的扩展性.当然还有其他的一些好处. 与关系型数据库相比,面向文档的数据库不再有 ...

  8. DataBase MongoDB高级知识-易扩展

    MongoDB高级知识-易扩展 应用程序数据集的大小正在以不可思议的速度增长.随着可用宽带的增长和存储器价格的下跌,即使是一个小规模的应用程序,需要存储的数据也可能大的惊人,甚至超出了很多数据库的处理 ...

  9. mongoDB高级查询$type4array使用解析

    今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题. $type符号: $type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果. 下面是mong ...

随机推荐

  1. 如何用shell脚本分析网站日志统计PV、404、500等数据

    以下shell脚本能统计出网站的总访问量,以及404,500出现的次数.统计出来后,可以结合监控宝来进行记录,进而可以看出网站访问量是否异常,是否存在攻击.还可以根据查看500出现的次数,进而判断网站 ...

  2. hbuilder打包app基本流程

    声明:本文可能用到一些工具和第三方网站,都是为了达到目的而使用的工具,绝不含有广告成分 1.下载.最新的Hbuilder X貌似不能直接创建移动app了(自己不会用),建议旧版.可去腾某讯软件中心下载 ...

  3. 拉丁超立方体初始化种群(附Matlab代码)

    拉丁超立方体初始化种群 1.引言 群智能算法一般以随机方式产生初始化种群的位置,但是这种方式可能导致种群内个体分布不均匀.拉丁超立方体抽样方法产生的初始种群位置,可以保证全空间填充和抽样非重叠,从而使 ...

  4. LR常见报错

    转:https://blog.csdn.net/yoyo_sunny/article/details/43406503

  5. 自定义函数(Power Query 之 M 语言)

    数据源: 任意工作簿 目标: 使用自定义函数实现将数据源导入Power Query编辑器 操作过程: PowerQuery编辑器>主页>新建源>其他源>空查询 编辑栏内写入公式 ...

  6. LuoguB2075 幂的末尾 题解

    Content 求 \(a^b\) 的末三位. 数据范围:\(1\leqslant a\leqslant 100\),\(1\leqslant b\leqslant 10^4\). Solution ...

  7. CF1006B Polycarp's Practice 题解

    Content 给定一个长度为 \(n\) 的数列,试将其分成 \(k\) 段,使得每一段中的最大值的和最大. 数据范围:\(1\leqslant k,n,a_i\leqslant 2000\). S ...

  8. java 多线程 集合的包装方法Collections.synchronizedXXXXX;线程安全的集合类:Java.util.concurrent.ConcurrentXXX;java.util.concurrent.CopyOnWriteXXXX

    问题:ArrayList  等线程不安全 当多线程并发修改一个集合数据时,可能同一个下标位置被覆盖. 示例代码: 一个List,我们创建10个线程,每个线程往这个List中添加1000条数据,结果往往 ...

  9. Spring学习(二)三种方式的依赖注入

    1.前言 上一篇讲到第一个Spring项目的创建.以及bean的注入.当然.注入的方式一共有三种.本文将展开细说. 1.set注入:本质是通过set方法赋值 1.创建老师类和课程类 1.Course ...

  10. PHP伪协议-文件包含

    lfi.php案例代码 <?php include $_GET['file']; ?> phar://.zip://.zlib://   用于读取压缩文件,zip:// .phart:// ...