日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > 數據庫應用 > mongoDB索引相關命令總結

mongoDB索引相關命令總結

來源:程序員人生   發布時間:2015-01-22 08:34:25 閱讀次數:3617次

1、在集合中文檔的某個鍵上面建立索引:

1、我們知道如果索引使用的得當,會大幅提升查詢速度,而如果使用不當有可能會使全部操作性能降落所以在建立索引的時候要斟酌以下幾點:

(1)、會做甚么樣的查詢,哪些鍵需要建立索引

(2)、每一個鍵的索引方向是怎樣樣的

(3)、如何應對擴大,怎樣排序鍵的方向,使更多經常使用的數據保存在內存中

2、這里注意1下,建立索引的時候可使用 1,⑴ 建立不同方向的索引

3、使用ensureIndex() 在指定的鍵上創建索引

4、建立普通索引:使用 ensureIndex()函數

例:db.mytest.ensureIndex({age:1})

//mytest集合中文檔的age鍵建立1個方向為“1”的索引

5、內嵌文檔建立索引:

例:db.mytest.ensureIndex({comment.data:1})

//在mytest這個集合的comment這個鍵的data鍵上創建索引,內嵌索引和1般的索引是1樣的!

6、為排序(Sort)做索引,如果沒有索引,或調用了沒有建立索引的鍵值進行排序,則mongodb會將所有數據加載到內從進行排序,這樣如果數量大,不能再內存中進行排序則會報錯,

7、索引的名稱默許依照:keyname1_dirx_keyname2_dirx的格式來顯示,其中的keyName1 就是默許的索引名稱,dirx就是建立的索引的方向

8、索引名的查看:indexs.find()

例:db.mytest.indexs.find();

// 查看在mytest集合下的所有的索引

9、建立索引時,自定義索引名稱:

例:db.mytest.ensureIndex({age:1},{name:'indexname'})



// 在mytest集合中文檔的age鍵創方向為1的索引,索引名稱為indexname

10、唯1索引:唯1索引可以保證集合中每個文檔的指定鍵都有唯1值

例:db.mytest.ensureIndex({name:1},{unique:true})

// 在mytest集合中的文檔的name鍵創建唯1索引,那末集合中文檔的name鍵的值不會有重復的!

11、消除重復值:當我們在1個集合中先創建了文檔,而其中有些文檔的值值重復的,這時候我們建立唯1索引,選擇dropDups這個選項則會把第1索引到的文檔保存,以后的就會被刪除!

例:db.mytest.ensureIndex({name:1},{unique:true,dropDups:true})

//mytest集合下文檔的name鍵創建方向為‘1’的唯1索引,如果文檔的name鍵的值有重復,則保存第1個檢索到的值,而以后的文檔就會被刪除

12、復合唯1索引:這個和結構化數據庫表的鍵很相似,如果這個表的鍵是1個屬性肯定的則這個屬性的值不能相同,而如果這個鍵是由兩個或多個屬性組成,則只要這多個屬性的值組合起來你能唯1肯定1行數據就能夠,而單個屬性的值可以相同,這個和唯1索引,復合唯1索引的定義表達一樣的意思

例:db.mytest.ensureIndex({name:1,id:1},{unique:true})

// 在mytest這個集合下的文檔的name id 鍵創建復合唯1索引,mytest集合下的文檔的name或id可以重復,而兩值1起只能肯定1個文檔,不能重復!

13、使用explain()工具查看具體信息:

例:db.mytest.find().explain()

// mytest集合中有8個文檔


// cursor:'basicCursor' 說明這個查詢沒有使用索引,這個正常由于查詢沒有條件

// nscanned: 代表數據庫查找了多少個文檔

// n代表數據返回的文檔的數量

// millis:毫秒數代表查詢使用的時間

14、有查詢條件的看看索引

例:db.mytest.find({age:2}).explain()


// 第1行數據就產生了變化,使用了btree索引,索引名稱是age_1

//nscanned:查詢的文檔樹變成1,由于有索引,所以不會進行全表掃描,所以查找的文檔數變少

 

2、管理索引:

1、修改索引:我們知道建立索引會費時,浪費資源,在建立索引期間,所有的數據庫的要求都會被阻塞,為了能夠正常要求數據庫我們可以將索引的建立在后臺進行履行。

2、使用{background:true} 選項可以將索引的建立在后臺履行,這樣就能夠正常要求數據庫,但有個缺點就是,索引的建立相對會慢1些!

3、刪除索引: collection.dropIndex({xxx:1/⑴})

例:db.mytest.dropIndex({age:1})

// 從mytest這個集合中的文檔的age這個鍵上創建的索引

4、刪除所有索引: dropIndexes()

例:db.mytest.dropIndexes() 


// 刪除這個集合下的文檔的多個鍵上創建的所有索引,包括_id 上的索引,通過運行結果可以看到!

 

5、之前說到mongodb的索引的建立使用 1,⑴ 來表示方向的,而mongodb還能建立地理空間索引,地理空間索引的建立使用'2d'來表示而不再是  1,⑴

6、建立2d索引:ensureIndex()建立地理空間索引的鍵是有要求的:鍵的值必須是1對值,或1個數據或1對鍵值對

例:db.mytest.insert({age:1,name:'name1',map:[2,2]})

db.mytest.insert({age:2,name:'name2',map:[2,3]})

….

db.mytest.insert({age:5,name:'name5',map:[5,6]})

添加多條數據

建立地理空間索引:

例:db.mytest.ensureIndex({"map":"2d"})


7、地理空間索引查詢:使用 $near

從中查找離[5,5]最近的兩個點:例:db.mytest.find({map:{"$near":[5,5]}}).limit(2)

 

8、依照圖形來查找:方形{"$within":{"#box":[[2,2],[6,6]]}}

例:db.mytest.find({"map":{"$within":{"$box":[[2,2],[6,6]]}}})

 

9、依照圖形查找:圓形{"$within":{"#center":[[3,3],1]}}

例:db.mytest.find({"map":{"$within":{"$center":[[3,3],1]}}})

 

//[[3,3],1]以3,3 作為圓心,以1作為半徑,查找離圓心由近到遠的點


注意:這里只是總結了mongodb中索引相干的命令,而怎樣建立高性能的索引及索引相干知識點深入學習可以學習MYSQL的索引,由于他們的索引的理念是1樣的!

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久成人国产精品入口 | 日韩一区综合 | 91精品久久久久久久久久 | 日韩高清在线免费观看 | 精品视频在线免费观看 | 精品国产高清一区二区三区 | 欧美日韩国产精品成人 | 一区二区三区精品在线 | 久久精品亚洲一区二区 | 国产高清精品一区二区三区 | 国产精品一区二区视频 | 国产视频在线播放 | 国产麻豆精品一区二区 | 国产日 | 久久久久91| 国产欧美日韩综合精品 | 欧美日韩亚洲成人 | 久久久精品网站 | 久久精品国产一区 | 日韩美女毛片 | 黄色日本片 | 红桃视频成人免费网站 | 亚洲成人www| 色淫网站 | 日韩精品第一 | 九九九精品视频 | 国产一区二区三区不卡在线观看 | 最新国产精品精品视频 | 黄色特级一级片 | 玖玖玖国产精品 | 国产精选久久 | 久久99精品久久久久久噜噜 | 老牛影视av一区二区在线观看 | 性史性dvd影片农村毛片 | 成人一区二区三区 | 欧美gay网站 | 中文字幕av第一页 | 久久精品视频在线看99 | 中文字幕精品久久久久 | 午夜精品久久久久 | 欧美日韩二区三区 |