對單一鍵創建索引php
db.collection.createindex( {name: 1} )
在集合的同一個鍵上不能重複創建單一索引;若已經創建了索引,再在間一個Key 上創建索引,將給予出錯提示。數組
1升序,-1降序服務器
嵌套文檔單字段索引分佈式
db.books.insert( { name:" <dirty cocks故事》", price: 30 , tags: {press: "飛出版社" , call :"1820000000"} } ) db.books.createIndex({"tags.press" :1})
惟一索引ide
db.collection.createindex( {name: 1}, {unique: true} //(注意MongoDB的命令是大小寫敏感的) )
name的值必須是惟一的,不能有重複值出現;不然,MongoDB將新插入的重複文檔予以拒絕。在沒有指定{unique:true}參數選項的狀況下,索引方法容許存在宇段值重複的多文檔記錄。函數
創建多字段索引(組合/複合索引)性能
//對兩個字段創建索引 db.books.createindex( { price:l , color:-1 } ) //用sort 排序查詢 db.books.find({}, {_id: 0}).sort.({price: 1, color: -1})
上述代碼先用createIndex命令創建price、color多鍵組合索引,而後用find()查找文檔記錄;對查找出來的文檔記錄結果用sort({price: 1, color: -1}先用作price 升序排序,在price價格同樣的狀況下,再對price相同記錄作color降序排序排序
多宇段惟一索引索引
db.books.createindex({name: l , price: l}, {unique: true}) //是容許的
只要name 和price 組合起來的值保持惟一性資源
基本文本索引
db.books.createindex({narne: "text"}) //爲name 創建文本索引
指定權重文本索引
db.books.createIndex( { name: "text", price: "text" }, { weights: {name: 10}, //爲name指定索引權重 name: "TextIndex" //默認狀況下,price權重爲1 } );
通配符文本索引
爲指定集合中的全部字符串內容進行搜索提供通配索引,這在高度非結構化的文檔裏比較有用
db.books.createIndex({"$**": "text"})
哈希索引
用於支持對分片鍵(帶哈希鍵值對的分片集合)的分片數據索引,主要用於分佈式數據索引
db.collection_name.createIndex({_id: "hashed"})
命令說明:key爲含有哈希值的鍵
(1.hashed 索引不支持多字段索。2.hashed會把浮點數的小數部分自動去掉,因此對浮點數字段進行索引時,要注意該特殊狀況。3.hashed 不支持惟一索引)
還能夠用ensureIndex()建立索引
>db.collection.ensureIndex({id: "hashed"})
MongoDB 3.0開始用createindex 命令代替ensureIndex
(1)db.collection.droplndex(index):移除集合指定的索引功能。index參數爲指定須要刪除的集合索引名,可用getlndexes()函數獲取集合的全部索引名稱。(2)db.collection.droplndexes():移除一個集合的全部索引功能。(3)db.collection.getlndexes():返回一個指定集合的現有索引描述信息的文檔數組。(4)db.collection.relndex():刪除指定集合上全部索引,並從新構建全部現有索引。在具備大量數據集合的狀況下,該操做將大量消耗服務器的運行資源,引發運行性能急劇降低等問題的發生。(5)db.collection.totallndexSize():提供指定集合索引大小的報告信息。