Mongodb單字段索引應(yīng)用詳解
學(xué)習(xí)mongodb,體會(huì)mongodb的每一個(gè)使用細(xì)節(jié),歡迎閱讀威贊的文章。這是威贊發(fā)布的第89篇mongodb技術(shù)文章,歡迎瀏覽本專欄威贊發(fā)布的其他文章。如果您認(rèn)為我的文章對(duì)您有幫助或者解決您的問題,歡迎在文章下面點(diǎn)個(gè)贊,或者關(guān)注威贊。謝謝。
當(dāng)用戶或應(yīng)用頻繁的針對(duì)集合中某個(gè)字段查詢時(shí),用戶可以在頻繁查詢的字段上添加索引來提高效率。例如,公司的HR部門,經(jīng)常使用員工的id查詢員工信息。開發(fā)人員或者數(shù)據(jù)管理人員就可以在id字段添加索引來提高查詢效率。這種針對(duì)單個(gè)字段建立的索引,就是單字段索引。
本文整理Mongodb的官方文檔,為您詳細(xì)介紹單字段索引。
概述
單字段索引,是使用集合中文檔的一個(gè)字段來建立的索引。mongodb默認(rèn)為_id字段建立了索引。用戶可以按照實(shí)際業(yè)務(wù)需求,添加建立新的單字段索引來提高查詢效率。
mongodb支持在文檔中的任何一個(gè)字段建立單字段索引,包括文檔的頂級(jí)字段,針對(duì)嵌入式文檔建立索引或者針對(duì)嵌入式文檔的某個(gè)字段建立索引。當(dāng)用戶對(duì)嵌入式文檔字段建立索引時(shí),用戶查詢條件當(dāng)中用來過濾的文檔,需要與集合索引中的文檔嚴(yán)格相等時(shí),才能使用索引。包括在查詢條件中輸入文檔的字段順序。當(dāng)用戶對(duì)嵌入式文檔進(jìn)行修改,包括對(duì)該文檔增加或刪除字段,都可能導(dǎo)致索引無法使用。因此在針對(duì)嵌入文檔字段建立索引時(shí),是否真正的需要針對(duì)整個(gè)文檔建立索引,還是使用嵌入文檔中的部分字段建立索引就可以了。
當(dāng)用戶建立索引時(shí),需要指定該索引的字段和字段值在索引中的排序。其中使用數(shù)字1表示按照字段值的正序排列。而指定-1時(shí),表示使用索引值的倒序排列。
語(yǔ)法
用戶按照下面的語(yǔ)法來創(chuàng)建單字段索引
db.<collection>.createIndex( {<field>: <sortOrder>})
其中,<field>為嵌入式文檔中的字段時(shí),需要使用點(diǎn)操作符。如“embedded.field1”.
下圖表示了使用單字段建立索引。
在集合collection中使用score字段上建立的索引。score是一個(gè)數(shù)字類型的字段。索引使用score字段的數(shù)值建立。從最小值min到最大值max排列。其中還包括18, 30, 45, 75這幾個(gè)數(shù)字。{score:1}表示按照字段score從小到大的順序排列建立索引。
應(yīng)用
創(chuàng)建students集合并插入數(shù)據(jù)。
db.students.insertMany([{ name: "Alice", gpa: 3.6, location: { city: "Sacramento", state: "California" } }, { name: "Bob", gpa: 3.9, location: { city: "San Francisco", state: "California"} }])
在頂級(jí)字段添加索引
在gpa字段創(chuàng)建索引
db.students.find({gpa: {$gt: 3.7}}) db.students.find({gpa: 3.6})
使用gpa字段建立索引后,會(huì)改善在gpa字段的查詢效率。如
db.students.find({gpa: {$gt: 3.7}}) db.students.find({gpa: 3.6})
在嵌入文檔字段添加索引
mongodb支持在嵌入文檔字段添加索引。在嵌入文檔字段添加索引,需要使用點(diǎn)操作符。如下面的語(yǔ)句,在文檔location的字段state上添加了單字段索引。
db.students.createIndex({"location.state": 1})
當(dāng)用戶頻繁的查詢location.state字段時(shí),就會(huì)用到這個(gè)索引
db.students.find( { "location.state": "California" } ) db.students.find( { "location.city": "Albany", "location.state": "New York" } )
為嵌入文檔字段添加索引
如為集合students中字段location添加索引
db.students.createIndex({location: 1})
到此這篇關(guān)于Mongodb單字段索引詳解的文章就介紹到這了,更多相關(guān)Mongodb單字段索引內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MongoDB社區(qū)版和企業(yè)版的差別對(duì)照表
這篇文章主要介紹了MongoDB社區(qū)版和企業(yè)版的差別對(duì)照表,本文同時(shí)提供了中文和英文版的對(duì)照表,需要的朋友可以參考下2014-10-10mongodb 集群重構(gòu)和釋放磁盤空間實(shí)例詳解
這篇文章主要介紹了mongodb 集群重構(gòu)和釋放磁盤空間實(shí)例詳解的相關(guān)資料,具有一定的參考價(jià)值,需要的朋友可以參考下2016-11-11express使用Mongoose連接MongoDB操作示例【附源碼下載】
這篇文章主要介紹了express使用Mongoose連接MongoDB操作,結(jié)合實(shí)例形式分析了express使用Mongoose連接MongoDB的具體步驟與相關(guān)實(shí)現(xiàn)技巧,并附帶源碼供讀者下載參考,需要的朋友可以參考下2019-07-07mongodb 添加用戶及權(quán)限設(shè)置詳解
我知道的關(guān)系型數(shù)據(jù)庫(kù)都是有權(quán)限控制的,什么用戶能訪問什么庫(kù),什么表,什么用戶可以插入,更新,而有的用戶只有讀取權(quán)限。2014-07-07開發(fā)分布式醫(yī)療掛號(hào)系統(tǒng)MongoDB集成實(shí)現(xiàn)上傳醫(yī)院接口
這篇文章主要介紹了開發(fā)分布式醫(yī)療掛號(hào)系統(tǒng)MongoDB集成實(shí)現(xiàn)上傳醫(yī)院接口,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04