MongoDB高级应用之数据转存与恢复(5)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 创建索引同时指定索引的名字

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数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
29天前
|
存储 缓存 NoSQL
MongoDB 是什么?有哪些应用场景?
MongoDB 是一个由 MongoDB Inc. 开发的基于分布式文件存储的面向文档的数据库,自 2009 年推出以来,以其高性能、易部署、模式自由、强大的查询语言和出色的可扩展性受到广泛欢迎。它适用于互联网应用、日志分析、缓存、地理信息系统等多种场景。MongoDB 支持多种编程语言,并提供了丰富的社区支持,便于开发者快速上手。结合板栗看板等工具,MongoDB 可进一步提升数据存储、分析和同步的效率,支持个性化功能实现,助力团队协作和项目管理。
|
1月前
|
存储 NoSQL MongoDB
数据的存储--MongoDB文档存储(二)
数据的存储--MongoDB文档存储(二)
|
24天前
|
NoSQL MongoDB 数据库
使用NimoShake将数据从AWS DynamoDB迁移至阿里云MongoDB
使用NimoShake将数据从AWS DynamoDB迁移至阿里云MongoDB
|
1月前
|
存储 NoSQL 关系型数据库
数据的存储--MongoDB文档存储(一)
数据的存储--MongoDB文档存储(一)
|
2月前
|
存储 监控 NoSQL
MongoDB以其独特的优势和广泛的应用场景
MongoDB以其独特的优势和广泛的应用场景
60 8
|
1月前
|
存储 NoSQL 物联网
这些案例展示了MongoDB在不同行业中的广泛应用
这些案例展示了MongoDB在不同行业中的广泛应用
88 4
|
1月前
|
存储 NoSQL 物联网
MongoDB在多个行业有广泛应用
MongoDB在多个行业有广泛应用
57 4
|
2月前
|
存储 监控 NoSQL
MongoDB的应用场景非常广泛
MongoDB的应用场景非常广泛
56 6
|
1月前
|
存储 监控 NoSQL
MongoDB在不同行业中的广泛应用
MongoDB在不同行业中的广泛应用
90 3
|
2月前
|
存储 NoSQL 物联网
MongoDB在哪些领域有应用?
MongoDB在哪些领域有应用?
54 3