国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

聊聊MongoDB - MongoDB索引介紹分享

Meathill / 2731人閱讀

摘要:全文索引主要用于搜索業(yè)務(wù)的索引,通過多種不同的查詢方式和條件進行全文索引,適合搜索引擎和站內(nèi)搜索業(yè)務(wù)。注全文索引全文索引目前不支持中文。

簡述

MongoDB中的索引其實類似于關(guān)系型數(shù)據(jù)庫,都是為了提高查詢和排序的效率的,并且實現(xiàn)原理也基本一致。由于集合中的鍵(字段)可以是普通數(shù)據(jù)類型,也可以是子文檔。MongoDB可以在各種類型的鍵上創(chuàng)建索引。

索引

MongoDB的索引就是集合Collection里面的Key字段,一般默認都會有一個默認索引_id,這是唯一也是不能被刪除的索引。也可以自己手動給某個索引指定唯一性:

db.testCollection.ensureIndex({...},unique:ture)
db.mycol.find().pretty()

說明:這是一段簡單的索引的建立代碼。

{
"_id":ObjectId(7df78ad8902c),
"a":"職友集",
"b":"廣州",
"c":"招牌平臺",
"d":"http://www.jonui.com",
"e":["php","java","adriod"],
"f":"50"
}

說明:這是一個典型的MongoDB集合文檔的結(jié)構(gòu),其中我們可以看到集合有一個默認索引_id。

MongoDB索引分為7類:

[1]默認索引(_id索引):MongoDB有個默認的“_id”的鍵,他相當(dāng)于“主鍵”的角色。集合創(chuàng)建后系統(tǒng)會自動創(chuàng)建一個索引在“_id”鍵上,它是默認索引,索引名叫“_id_”,是無法被刪除的,_id值也是恒定不變的。
[2]單鍵索引:索引值為一個單一的值,比如字符串,更新日期等等。
[3]多建索引:索引值為多個值同時存在,例如數(shù)組。
[4]復(fù)合索引:單鍵索引和多建索引的結(jié)合。
[5]過期索引:在一段時間后會過期(自動銷毀記錄)的索引,適合用于處理用戶登錄信息等具有時間局限的記錄過期處理(比較多的做法是Session或者cookie),對一些存儲日志的過期處理等等用途。
[6]全文索引:主要用于搜索業(yè)務(wù)的索引,通過多種不同的查詢方式和條件進行MongoDB全文索引,適合搜索引擎和站內(nèi)搜索業(yè)務(wù)。
[7]地理位置索引:根據(jù)區(qū)間值進行范圍索引查詢,這種索引適合于當(dāng)前越來越流行的打車軟件查詢?nèi)塑囄恢脮r通過索引提升查詢效率,還有網(wǎng)購點餐時查詢距離自己范圍內(nèi)的餐廳地址等等。

注:索引的最終目標是提升查詢效率和速度,索引不能過多,需要理性創(chuàng)建最適合的。
注:過期索引 :存儲的字段值必須是指定的時間類型ISODate或者是ISODate數(shù)組,不能使用時間戳,否則索引會失效。
注:過期索引:記錄自動銷毀進程是每60S跑一次的后臺程序,并不是很準時的自動程序。
注:過期索引:如果指定了ISODate數(shù)組,那么程序會自動吧數(shù)組內(nèi)時間最早的那條記錄銷毀掉。
注:過期索引:過期索引不能被復(fù)合索引所引用。
注:全文索引:MongoDB全文索引目前不支持中文。

全文索引:在實際應(yīng)用上,MongoDB的全文索引由于不支持中文索引,因此單單依靠MongoDB進行全文索引支持搜索業(yè)務(wù)的效率和成本是很高的,一般來講業(yè)內(nèi)是不建議使用MongoDB進行全文索引的,除非MongoDB官方能增加對中文索引的支持,不然,MongoDB更多的還是停留在數(shù)據(jù)倉庫的角色。

注:全文索引:利用全文索引相似度可以實現(xiàn)對查詢結(jié)果進行相似度排序,從而實現(xiàn)一個簡單的小搜索相似度排序,類似于谷歌百度查詢相似度排序。

創(chuàng)建:

db.testCollection.ensureIndex({"content":text})

查詢:

db.testCollection.find({$test:{$search:"jobui.com"}},{score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}})

全文索引有四種查詢方式:

(1)查詢單條記錄:

db.testCollection.find({$text:{$search:"aaa"}})

(2)用空格隔開實現(xiàn)多字段索引查詢(或查詢):

db.testCollection.find({$text:{$search:"aa bb cc"}})

(3)-可以使得查詢結(jié)果不能含有指定字段:

db.testCollection.find({$test:{$search:"aa -bb"}})

(4)用"來實現(xiàn)“且”查詢(并列查詢):

db.testCollection.find({$text:{$search:""aa "bb "}})

注:MongoDB全文索引每次查詢只能指定一個$text查詢
注:地理位置索引:查詢距離某點的一定距離范圍內(nèi)的點;查找包含在某一區(qū)域所有點。
注:地理位置索引:有兩個子分類。
(1)2D索引:平面地理位置索引
(2)2Dsphere索引:球面地理位置索引

創(chuàng)建:
(1)2D索引:

db.a.ensureIndex({w:"2d"})

//*位置表示方式:經(jīng)緯度[經(jīng)度,緯度],取值范圍:經(jīng)度[-180,180]緯度[-90,90]

(2)2Dsphere索引:

db.a.ensureIndex({w:"2dsphere"})

//*位置表示方式:GeoJSON描述點、線、多邊形,格式:{type:"",coordinates:[]},支持$minDistance,$maxDistance

查詢:
(1)2D索引:

$Near查詢:查詢距離某個點最近的點。
例:

db.a.find({w:{$near:[1,1], $maxDistance:10}}) 
//*查詢在點[1,1]距離最近的10個點。

$geoWithin查詢:查詢某個形狀內(nèi)的點。

例1:

db.a.find({w:{$geowithin:{$box:[0,0], [3,3]}}}) 
//*查詢在左邊界[0,0],右邊界[3,3]的矩形范圍內(nèi)的所有點。

例2:

db.a.find({w:{$geowithin:{$center:[[0,0], 5]}}}) 
//*查詢在[0,0]為圓心,半徑為5的圓形區(qū)域內(nèi)的所有點。

例3:

db.a.find({w:{$geowithin:{$polygon:[[0,0], [1,2], [2,5], [6,1]]}}}) 
//*查詢在多個坐標點組成的多邊形范圍內(nèi)的所有點。

$geoNear查詢:查詢相近的點的數(shù)據(jù)。
例:

db.command({$geoNear:"a", near:[1,2], maxDistance:10, num:1})

(2)2Dsphere索引:略。

注:MongoDB自帶的庫狀態(tài)管理工具Mongostat:這個工具可以查看當(dāng)前MongoDB的數(shù)據(jù)讀取和索引命中情況:

命令:./mongostat -h 127.0.0.1:8080 可以查看MongoDB狀態(tài)信息。

其中請關(guān)注這些字段所給我們返回的信息:

qr : 讀隊列情況(實時查詢MongoDB情況)

qw : 寫隊列情況(實時寫入MongoDB情況)

idx miss : 索引命中情況

注:在find()后面加入explain()可以查看查詢的詳細信息

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/21258.html

相關(guān)文章

  • 聊聊MongoDB - MongoDB索引介紹分享

    摘要:全文索引主要用于搜索業(yè)務(wù)的索引,通過多種不同的查詢方式和條件進行全文索引,適合搜索引擎和站內(nèi)搜索業(yè)務(wù)。注全文索引全文索引目前不支持中文。 簡述 MongoDB中的索引其實類似于關(guān)系型數(shù)據(jù)庫,都是為了提高查詢和排序的效率的,并且實現(xiàn)原理也基本一致。由于集合中的鍵(字段)可以是普通數(shù)據(jù)類型,也可以是子文檔。MongoDB可以在各種類型的鍵上創(chuàng)建索引。 索引 MongoDB的索引就是集合Co...

    Bowman_han 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<