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