欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于對(duì)MongoDB索引的一些簡(jiǎn)單理解

 更新時(shí)間:2021年09月15日 09:34:08   作者:Fire♪一度  
索引的作用是為了提升查詢效率,如果查詢條件帶有索引,MongoDB 將掃描索引, 通過(guò)索引確定要查詢的部分文檔,而非直接對(duì)全部文檔進(jìn)行掃描,下面這篇文章主要給大家介紹了關(guān)于對(duì)MongoDB索引的一些簡(jiǎn)單理解,需要的朋友可以參考下

索引簡(jiǎn)介

索引可以提升文檔的查詢速度,但建立索引的過(guò)程需要使用計(jì)算與存儲(chǔ)資源,在已經(jīng)建立索引的前提下,插入新的文檔會(huì)引起索引順序的重排。

MongoDB 的索引是基于 B-tree 數(shù)據(jù)結(jié)構(gòu)及對(duì)應(yīng)算法形成的。樹索引存儲(chǔ)特定字段或字段集的值,按字段值排序。索引條目的排序支持有效的等式匹配和基于范圍的查詢操作。

1.語(yǔ)法準(zhǔn)備

  • ​ explain() :查看執(zhí)行計(jì)劃
  • ​ getIndexes() :查看所有索引
  • ​ hint() : 強(qiáng)制使用某一索引進(jìn)行查詢

2.數(shù)據(jù)準(zhǔn)備:

{
    "_id" : ObjectId("6127594238754d0067383ff6"),
    "xh" : 1,
    "szly" : {
        "lymc" : "AA大廈",
        "z" : "A",
        "lh" : "1",
        "sy" : "啥意思"
    },
    "qtxx" : {
        "nsssjg" : "A、區(qū)內(nèi)",
        "sfwkgh" : "否",
        "cylx" : "第三產(chǎn)業(yè)",
        "rzlysj" : "2011.11",
        "fwcqdw" : "河南置業(yè)有限公司",
        "fwszlc" : "5",
        "fjh" : "601、604",
        "mj" : 56,
        "cyry" : 5,
        "yzj" : 2,
        "qylx" : "H、其他",
        "ssqylx" : "C、非上市企業(yè)",
        "lxr" : "AA蘭",
        "lxdh" : "85685685"
    },
    "sssq" : "裕鴻樓宇社區(qū)",
    "frxx" : {
        "qyfr" : "AA蘭",
        "qyfzr" : "AA蘭",
        "lxfs" : "18888888888"
    },
    "qyjbxx" : {
        "xy" : "P 教育",
        "qymc" : "鄭州市管城回族培訓(xùn)學(xué)校",
        "gsyyzzh" : "31313123",
        "swdjzh" : "123123123",
        "tyxydm" : "313123123",
        "zcdz" : "裕鴻國(guó)際A座6層",
        "jjxz" : "有限責(zé)任公司",
        "zczb" : 100
    },
    "importMonth" : "202108",
    "batch" : "1629968706400_1",
    "createBy" : "1",
    "department" : "區(qū)政府",
    "createTime" : ISODate("2021-08-26T09:05:06.416Z"),
    "status" : 0,
    "ddly" : {
        "zh" : "",
        "lh" : "",
        "sy" : ""
    },
    "lcxx" : {
        "zb" : "",
        "szlc" : "",
        "mj" : ""
    },
    "updateBy" : "1",
    "updateTime" : "2021-08-27 11:14:31"
}

3.索引

3.1 唯一索引

 默認(rèn)索引:_id(唯一性的索引)

 唯一索引會(huì)保證索引對(duì)應(yīng)的鍵不會(huì)出現(xiàn)相同的值,如果唯一索引所在的字段有重復(fù)數(shù)據(jù)寫入時(shí),拋出異常。

db.getCollection("qydrmb_copy").createIndex({"qtjbxx":1},{unique:true})

3.2 單鍵索引

 最普通索引,不會(huì)自動(dòng)創(chuàng)建。

 創(chuàng)建單建索引示例

db.getCollection("qydrmb_copy").createIndex({"qtjbxx":1})

db.getCollection("qydrmb_copy").createIndex({"qtxx.fwcqdw":1})

注意:

  • ​ qydrmb_copy:集合名稱
  • ​ qtjbxx:集合字段名
  • ​ qtxx.fwcqdw:集合中子集合字段名
  • ​ 1:升序排序
  • ​ -1:降序排序

3.3 多鍵索引

 多鍵索引和單鍵索引創(chuàng)建形式一樣,區(qū)別:字段的值,值具有多個(gè)記錄,如,數(shù)組

注意:通過(guò) getIndexes() 不能區(qū)分該索引是單鍵索引還是多鍵索引,可以 explain() 執(zhí)行計(jì)劃的打印信息中查看(isMultKey 屬性)

3.4 復(fù)合索引

 復(fù)合索引針對(duì)多個(gè)字段聯(lián)合創(chuàng)建索引,先按照第一個(gè)字段排序,第一個(gè)字段相同的文檔按照第二個(gè)字段排序,依次類推。

 語(yǔ)法:

db.collection_name.createIndex({索引鍵名:排序規(guī)則, 索引鍵名:排序規(guī)則, ...})

 復(fù)合索引能滿足的查詢場(chǎng)景比單字段索引更豐富,不光能滿足多個(gè)字段組合起來(lái)的查詢,也能滿足所有能匹配符合索引前綴的查詢。

​ 注意:創(chuàng)建一個(gè)復(fù)合索引 A、B, 查詢條件中包含A,B會(huì)走索引,查詢條件中包含A,也會(huì)走索引,查詢條件中沒有A,只有一個(gè)B,此時(shí)不會(huì)走索引。A就稱為索引前綴。

3.5 交叉索引

 交叉索引就是為了一個(gè)集合的多個(gè)字段分別建立索引,在查詢的時(shí)候通過(guò)多個(gè)字段作為查詢條件,這種情況稱為交叉索引。

 交叉索引和復(fù)合索引區(qū)別:交叉索引 A、B是兩個(gè)索引,復(fù)合索引中 A、B組成了一個(gè)索引。

​ 注意:一個(gè)集合中包含交叉索引A、 B,在查詢條件中包含A、或者包含B、或者包含A、B的情況下,都會(huì)觸發(fā)交叉索引。

3.6 部分索引

 部分索引是針對(duì)符合某個(gè)特定條件的文檔建立索引,3.2版本才支持該特性。

 MongoDB 部分索引只為那些在一個(gè)集合中,滿足指定的篩選條件的文檔創(chuàng)建索引。簡(jiǎn)單理解就是部分索引是帶有過(guò)濾條件的索引,即索引只存在于某些文檔之上

​ 語(yǔ)法:

db.collection_name.createIndex({索引鍵名:排序規(guī)則},{partialFilterExpression:{"前面進(jìn)行排序的鍵名":{匹配條件:條件值}}})

注意:部分索引和唯一所以一塊使用,唯一約束只適用于滿足篩選條件的文檔。

3.7覆蓋索引

 1.所有的查詢字段是索引的一部分

 2.查詢返回的所有字段在同一個(gè)索引中

例如:如果一個(gè)索引中包含A、B 兩個(gè)字段,查詢條件只有一個(gè)A, 返回結(jié)果為 A、B兩個(gè)字段,則此時(shí)會(huì)觸發(fā)覆蓋索引,即不再掃描整個(gè)文檔,而是直接從索引中獲取數(shù)據(jù)。

3.8 全文索引

 全文檢索對(duì)每一個(gè)詞建立一個(gè)索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當(dāng)用戶查詢時(shí),檢索程序就根據(jù)事先建立的索引進(jìn)行查找,并將查找的結(jié)果反饋給用戶的檢索方式。

 MongoDB 從 2.4 版本開始支持全文檢索,目前支持15種語(yǔ)言的全文索引(danish、dutch、english、finnish、french、german、hungarian、italian、norwegian、portuguese、romanian、russian、spanish、swedish、turkish)。

 mongo2.6之后默認(rèn)開啟全文檢索。

創(chuàng)建語(yǔ)法:

db.collection_name.ensureIndex({全文索引的字段名:"text"})

查詢語(yǔ)法:

db.collection_name.find({$text:{$search:"檢索的值"}})

4.索引限制

4.1 查詢限制

  • 索引不能被以下查詢使用:
  • 正則表達(dá)式(最左匹配除外)及非操作符,如$nin,$not等
  • 算數(shù)運(yùn)算符,如 $mod 等。
  • 可以使用explain()來(lái)查看是否執(zhí)行了索引

4.2 范圍限制

  • 集合中索引不能超過(guò)64個(gè)
  • 索引名的長(zhǎng)度不能超過(guò)128個(gè)字符
  • 一個(gè)符合索引最多可以有31個(gè)字段
  • 索引的大小不能超過(guò)內(nèi)存的限制,如果超出限制,Mongo會(huì)刪除一些索引,會(huì)導(dǎo)致性能下降。

總結(jié)

到此這篇關(guān)于對(duì)MongoDB索引的一些簡(jiǎn)單理解的文章就介紹到這了,更多相關(guān)MongoDB索引簡(jiǎn)單理解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mac下使用brew 安裝mongodb的方法教程

    mac下使用brew 安裝mongodb的方法教程

    mac 系統(tǒng)常用的軟件安裝工具就是 homebrew.那么通過(guò)brew怎么安裝mongodb呢?下面小編給大家分享mac下使用brew 安裝mongodb的方法教程,一起看看吧
    2016-10-10
  • MongoDB的備份(mongodump)與恢復(fù)(mongorestore)

    MongoDB的備份(mongodump)與恢復(fù)(mongorestore)

    在使用MongoDB時(shí),數(shù)據(jù)備份與恢復(fù)是非常重要的一環(huán),以防止數(shù)據(jù)丟失或意外刪除,本文就來(lái)介紹一下MongoDB的備份(mongodump)與恢復(fù)(mongorestore),感興趣的可以了解一下
    2023-12-12
  • 如何去掉保存mongodb數(shù)據(jù)時(shí)出現(xiàn)的_class字段

    如何去掉保存mongodb數(shù)據(jù)時(shí)出現(xiàn)的_class字段

    這篇文章主要給大家介紹了如何去掉保存mongodb數(shù)據(jù)時(shí)出現(xiàn)的_class字段,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • Mongodb 3.2.9開啟用戶權(quán)限認(rèn)證問題的步驟詳解

    Mongodb 3.2.9開啟用戶權(quán)限認(rèn)證問題的步驟詳解

    這篇文章主要給大家介紹了關(guān)于Mongodb 3.2.9開啟用戶權(quán)限認(rèn)證問題的詳細(xì)步驟,通過(guò)開啟權(quán)限認(rèn)證,會(huì)對(duì)大家的Mongodb更加保護(hù)的安全些,文中將步驟介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-08-08
  • 阿里云服務(wù)器安裝mongodb的方法

    阿里云服務(wù)器安裝mongodb的方法

    這篇文章主要介紹了阿里云服務(wù)器安裝mongodb的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • MongoDB的基本操作實(shí)例詳解【服務(wù)端啟動(dòng),客戶端連接,CRUD操作】

    MongoDB的基本操作實(shí)例詳解【服務(wù)端啟動(dòng),客戶端連接,CRUD操作】

    這篇文章主要介紹了MongoDB的基本操作,結(jié)合實(shí)例形式分析了MongoDB數(shù)據(jù)庫(kù)的服務(wù)端啟動(dòng),客戶端連接,CRUD操作等基本實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • MongoDB客戶端工具NoSQL?Manager?for?MongoDB介紹

    MongoDB客戶端工具NoSQL?Manager?for?MongoDB介紹

    這篇文章介紹了MongoDB客戶端工具NoSQL?Manager?for?MongoDB,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Navicat Premium連接mongodb詳細(xì)教程

    Navicat Premium連接mongodb詳細(xì)教程

    這篇文章主要介紹了Navicat Premium連接mongodb詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • MongoDB 中Limit與Skip的使用方法詳解

    MongoDB 中Limit與Skip的使用方法詳解

    這篇文章主要介紹了MongoDB 中Limit與Skip的使用方法詳解的相關(guān)資料,這里對(duì)這兩種方法進(jìn)行了詳細(xì)介紹并附示例代碼,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下
    2017-07-07
  • 淺談MySQL和MariaDB區(qū)別(mariadb和mysql的性能比較)

    淺談MySQL和MariaDB區(qū)別(mariadb和mysql的性能比較)

    MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品
    2018-02-02

最新評(píng)論