当前位置: 首页 > 后端技术 > Java

MongoDB高级应用之数据传输与恢复(五)

时间:2023-04-01 18:22:49 Java

1、MongoDB索引1.1、创建索引db.books.ensureIndex{{number:1}}创建索引并指定索引的名称db.books.ensureIndex({数字:1},{名称:“book_”})1.2。使用索引需要注意的事项1)创建索引时注意1是按正序创建索引-1是按倒序创建索引2)创建索引会提高查询性能影响插入的性能。对于经常查询而很少插入的文档,可以考虑使用索引。3)注意索引的顺序是否匹配索引。4)为每个key建立索引并不一定能提高性能。索引不是万能的。5)做排序工作如果数据量很大,也可以考虑加索引提高排序的性能1.3。唯一索引解决了文档书籍不能插入重复值的问题。({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。建立索引的强制查询#姓氏为索引名称,正反顺序根据建立索引的规则,否则会报错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]rangedb.map.ensureIndex({gis:"2d"},{min:-1,max:201})3.MongoDB数据传输和恢复3.1.使用mongoexport命令行导出数据(中断其他操作)-d指定使用的库-c指定导出的表-o指定导出的文件名-csv指定导出的csv格式-q过滤导出的--type将testdb中的数据导出为personsmongoexport-dtestdb-cpersons-oD:/persons.json导出其他宿主数据库的文件mongoexport--host192.168.0.16--port370173.2,import数据(中断其他操作)mongoimport--dbtestdb--collectionspersons--filed:/persons.json3.3,runtimebackupmongodump.exeAPI:http://docs.mongodb.org/manua...mongodump--主机127.0.0.1:27017-dtestdb-od:/testdb3。4.运行时恢复mongorestore.exeAPI:http://docs.mongodb.org/manua...restoredatabasedb.dropDatabase()mongorestore--host127.0.0.1:27017-dtestdb-directoryperdbd:/testdb/testdbMongoDB是一个文件数据库,实际上可以通过复制文件来备份3.5,加锁和解锁db.runCommand({fsync:1,lock:1})#lockdb.currentOp()#unlock3.7,断电时数据修复failure当不可逆的灾难来临时,由于mongodb的存储结构,会产生垃圾数据。数据恢复后,垃圾数据依然存在。这是一个可以提供自我修复能力的数据库。使用方法很简单 db.repairDatabase()关注微信公众号『汤姆炸弹架构』回复“MongoDB”获取配套资料科技在于分享,我分享我的快乐!如果大家有什么建议,也可以留言或者私信。您的支持是我坚持创作的动力。关注微信公众号『汤姆炸弹建筑』,获取更多技术干货!原创不易,坚持很酷,看到这里了,小伙伴们记得点赞、收藏、观看、加关注哦!如果觉得内容太干,可以分享转发给身边的朋友一起滋润哦!