麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > MongoDB > 正文

十天掌握MongoDB之四:使用索引

2020-03-14 13:23:21
字體:
供稿:網(wǎng)友

創(chuàng)建索引

MongoDB的索引機制與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫索引幾乎是一樣的,絕大多數(shù)優(yōu)化SQL索引的技巧也都適用于MongoDB。索引會增加數(shù)據(jù)插入、更新和刪除的性能開銷,應(yīng)避免為每個鍵都創(chuàng)建索引。

// 創(chuàng)建 索引

db . things . ensureIndex ({

'j ' : 1

});

// 創(chuàng)建子文檔 索引

db . things . ensureIndex ({

'user.Name ' : - 1

});

// 創(chuàng)建復(fù)合索引

db . things . ensureIndex ({

'j ' : 1 , // 升序

'x ' : - 1 // 降序

});

/*

如果您的 find 操作只用到了一個鍵,那么索引方向是無關(guān)緊要的;當創(chuàng)建復(fù)合索引的時候,一定要謹慎斟酌每個鍵的排序方向 。

* /

修改索引

// 修改索引,只需要重新運行索引命令即可

// 如果索引已經(jīng)存在則會重建, 不存在的索引會被 添加

db . things . ensureIndex ({

// 原來的索引會 重建

'user.Name ' : - 1 ,

// 新增一個升序 索引

'user.Name ' : 1 ,

// 為 Age 新建降序 索引

'user.Age ' : - 1

}, {

// 打開后臺執(zhí)行

‘background' : true

});

// 重建索引

db. things .reIndex();

注意:MongoDB不會檢查要索引的鍵名是否真的存在。當background為false或未指定時,創(chuàng)建索引的過程會以阻塞的形式運行,此時MongoDB無法處理任何請求。

刪除索引

如果刪除整個集合(drop)也會刪除集合中的索引。如果是刪除集合中所有的文檔(remove)則不會影響索引,當有新文檔插入時,索引就會重建。

// 刪除集合中的所有 索引

db . things . dropIndexes ();

// 刪除指定鍵的索引

db . things . dropIndex ({

x : 1 ,

y : - 1

});

// 使用 command 刪除指定鍵的 索引

db . runCommand ({

dropIndexes : 'foo ' ,

index : { y : 1 }

});

// 使用 command 刪除所有 索引

db . runCommand ({

dropIndexes : 'foo ' ,

index : '*‘

});

唯一索引

// 創(chuàng)建唯一索引,同時這也是一個符合唯一索引

db . things . ensureIndex (

{

'firstName ' : 1 ,

'lastName ' : 1

}, {

// 指定為唯一索引

'unique ' : true ,

// 刪除重復(fù) 記錄

'dropDups ' : true

});

注意:

1、_id本身就是個唯一索引,不同的是,它不能被刪除;

2、刪除重復(fù)記錄時,僅會按順序保留第一文檔;

3、如果創(chuàng)建了唯一索引,但文檔并不包含該鍵,默認以null存儲,因此如果發(fā)現(xiàn)了第二項未指定該鍵或該鍵被指定為null的記錄,就會被認為是重復(fù)的;

4、所謂復(fù)合唯一索引,允許單鍵重復(fù),但組合起來之后是不允許重復(fù)的;

地理空間索引 - 創(chuàng)建

不了解神馬是地理空間?先看下百度的解釋吧【地理空間】!

MongoDB為處理地理空間信息增加了一個專門的索引結(jié)構(gòu)——2d,對就是二弟!

要使用二弟索引,表示地理坐標的鍵必須是一個長度為2的數(shù)組。然后為該鍵創(chuàng)建取值為“2d”的索引即可。請看下面代碼實例。

// 文檔 格式

{

'_ id' : 1 ,

'name ' : ' 天安門 ' ,

'location' :[

116.12345 ,

39.54321

]

}

// 創(chuàng)建地理空間 索引

db . map . ensureIndex ({

'location ' : '2d‘

});

MongoDB的地理空間索引的取值沒有單位,這意味著你可以為其設(shè)置任何單位。默認地理空間索引的假設(shè)值是-180 ~ 180。如果需要自定義其他的取值范圍,請參考下面代碼實例。

// 創(chuàng)建地理空間 索引

db . map . ensureIndex ({

'location ' : '2d‘

}, {

'min ' : - 10000 ,

'max ' : 10000

});

地理空間索引 - $NEAR

$near操作符與geoNear Command的區(qū)別在于:geoNear會同時返回每個地標與給定中心點的距離(注意,這里的距離沒有單位)。

// $near 操作符

db . places . find ({

loc : {

// 中心點

$ near : [ 50 , 50 ],

// 查詢半徑

$ maxDistance : 5

}

}). limit ( 20 );

// 如果沒有指定 limit ,其默認值為 100

地理空間索引 - $WITHIN(BOX)

$within操作符支持以下幾個選項:

• $box:矩形查找

• $center:圓形查找

• $polygon:多邊形查找(v1.9+支持)

$box實例

// 定義一個矩形 區(qū)域

var box = [

// 左 上角

[ 40.73083 , - 73.99756 ],

// 右 下角

[ 40.741404 , - 73.988135 ]

];

// 查找

db . places . find ({

" loc" : {

"$ within" : {

"$ box" : box

}

}

});

$center實例

// 定義 中心點

var center = [ 50 , 50 ];

// 定義查找 半徑

var radius = 10 ;

// 查找

db . places . find ({

" loc" : {

"$ within" : {

// 注意這里是數(shù)組傳遞

"$ center" : [

center ,

radius

]

}

}

});

$polygon實例

十天掌握MongoDB之四:使用索引

小結(jié)

1、索引可以加速查詢;

2、單個索引無需在意其索引方向;

3、多鍵索引需要慎重考慮每個索引的方向;

4、做海量數(shù)據(jù)更新時應(yīng)當先卸載所有索引,待數(shù)據(jù)更新完成后再重建索引;

5、不要試圖為每個鍵都創(chuàng)建索引,應(yīng)考慮實際需要,并不是索引越多越好;

6、唯一索引可以用來消除重復(fù)記錄;

7、地理空間索引是沒有單位的,其內(nèi)部實現(xiàn)是基本的勾股定理算法。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 天天曰夜夜操 | 中文字幕激情 | 久综合 | 亚洲精品无码不卡在线播放he | 性爱视频在线免费 | 亚洲国产精品久久久 | 黄色免费小网站 | 91九色精品| 日韩视频一区二区三区四区 | 色中射| 一级黄色av电影 | 久久九九热re6这里有精品 | 视频一区二区中文字幕 | 特片网久久 | 国产精品99精品 | 成人毛片在线 | 人人舔人人射 | 成人毛片视频在线播放 | 草久视频在线观看 | 欧美一级淫片免费播放口 | 精品国产看高清国产毛片 | 噜噜噜在线 | 久久精品探花 | 日本高清一级片 | 欧美色淫 | 久久久久久久.comav | 色播视频在线播放 | 神秘电影91| 欧美性受xxxx人人本视频 | 凹凸成人精品亚洲精品密奴 | 欧美成人免费tv在线播放 | 在线a亚洲视频播放在线观看 | 2021狠狠操| 黑人日比视频 | 久色成人| 91成人亚洲 | 污片在线观看视频 | 国产一区二区三区精品在线观看 | 欧美性激情视频 | 91短视频版高清在线观看免费 | 亚洲免费看片网站 |