ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2022-01-07 13:32:56  阅读:215  来源: 互联网

标签:name -- MongoDB db 高级 索引 books testdb 转存


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弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!
如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力。

原创不易,坚持很酷,都看到这里了,小伙伴记得点赞、收藏、在看,一键三连加关注!如果你觉得内容太干,可以分享转发给朋友滋润滋润!

标签:name,--,MongoDB,db,高级,索引,books,testdb,转存
来源: https://www.cnblogs.com/gupaoedu-tom/p/15774661.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有