MongoDB 索引
1、索引
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 不能插入重複的數值
db.books.ensureIndex({name:-1},{unique:true}) #則插入相同的name 值會報錯
1.4、踢出重複值
如果建議唯一索引之前已經有重複數值如何處理
db.books.ensureIndex({name:1},{name:"book_",unique:true,dropDups:true}) #
踢出重複數值
1.5、後臺執行創建索引
為了解決創建索引鎖表的問題,在不影響查詢功能,可以在後臺運行
db.books.ensureIndex({name:1},{background:true})
13.6、強制查詢已經建立好的索引
db.books.find({name:"323book"}).hint({name:1})
#後一個name 為索引名,正序倒序依據建立索引的規則,否則會報錯
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、二維索引
建立二維索引
db.map.ensureIndex({gis:"2d"},{min:-1,max:201})
#默認會建一個[-108,108]的範圍
MongoDB 數據轉存及恢復
1、導出數據(中斷其他操作)
使用mongoexport 命令行
-d 指明使用的庫
-c 指明要導出的表
-o 指明要導出的文件名
-csv 指定導出的csv 格式
-q 過濾導出
--type
把數據好testdb 中的persons 導出
mongoexport -d testdb -c persons -o D:/persons.json
導出其他主機數據庫的文檔
mongoexport --host 192.168.0.16 --port 37017
2、導入數據(中斷其他操作)
mongoimport --db testdb --collections persons --file d:/persons.json
3、運行時備份mongodump.exe
API: http://cn.docs.mongodb.org/manual/reference/mongodump
mongodump --host 127.0.0.1:27017 -d testdb -o d:/testdb
4、運行時恢復mongorestore.exe
API:http://cn.docs.mongodb.org/manual/reference/mongorestore
恢復數據庫
db.dropDatabase()
mongorestore --host 127.0.0.1:27017 -d testdb -directoryperdb d:/testdb/testdb
5、mongoDB 是文件數據庫這其實就可以用拷貝文件的方式進行備份
6、上鎖和解鎖
db.runCommand({fsync:1,lock:1}) #上鎖
db.currentOp() #解鎖
7、數據修復
當停電等不可逆轉災難來臨的時候,由於mongodb 的存儲結構導致
會產生垃圾數據,在數據恢復以後這垃圾數據依然存在,這是數據庫
提供一個自我修復的能力.使用起來很簡單
db.repairDatabase()
閱讀更多 Java程序猿鼓勵師 的文章