关于java:MongoDB高级应用之数据转存与恢复5

34次阅读

共计 1945 个字符,预计需要花费 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/manua…


mongodump --host 127.0.0.1:27017 -d testdb -o d:/testdb

3.4、运行时复原 mongorestore.exe

API:http://docs.mongodb.org/manua…

复原数据库


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”可获取配套材料。

本文为“Tom 弹架构”原创,转载请注明出处。技术在于分享,我分享我高兴!如果您有任何倡议也可留言评论或私信,您的反对是我保持创作的能源。关注微信公众号『Tom 弹架构』可获取更多技术干货!

原创不易,保持很酷,都看到这里了,小伙伴记得点赞、珍藏、在看,一键三连加关注!如果你感觉内容太干,能够分享转发给敌人滋润滋润!

正文完
 0