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í),表示使用索引值的倒序排列。
語法
用戶按照下面的語法來創(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)操作符。如下面的語句,在文檔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單表數(shù)據(jù)的導(dǎo)出和恢復(fù)實(shí)例講解
MongoDB 是一個(gè)跨平臺(tái)的,面向文檔的數(shù)據(jù)庫,提供高性能,高可用性和可擴(kuò)展性方便。 MongoDB 工作在收集和文件的概念。接下來通過本文給大家介紹MongoDB單表數(shù)據(jù)的導(dǎo)出和恢復(fù)實(shí)例講解,對(duì)mongodb導(dǎo)出和恢復(fù)數(shù)據(jù)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-03-03
mongodb字段值自增長(zhǎng)實(shí)現(xiàn)代碼
這篇文章主要介紹了mongodb字段值自增長(zhǎng)實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
mongodb使用c#驅(qū)動(dòng)數(shù)據(jù)插入demo
今天小編就為大家分享一篇關(guān)于mongodb使用c#驅(qū)動(dòng)數(shù)據(jù)插入demo,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-01-01
關(guān)于mongoDB的聚合操作_aggregate()歸納詳解
這篇文章主要介紹了關(guān)于mongoDB的聚合操作_aggregate()歸納詳解,關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系,聚合是整體和個(gè)體之間的關(guān)系,聚合關(guān)系也是通過實(shí)例變量實(shí)現(xiàn)的。在聚合關(guān)系中,兩個(gè)類是處在不平等層次上的,一個(gè)代表整體,另一個(gè)代表部分,需要的朋友可以參考下2023-07-07
MongoDB添加secondary節(jié)點(diǎn)的2種方法詳解
這篇文章主要給大家總結(jié)介紹了關(guān)于MongoDB添加secondary節(jié)點(diǎn)的2種方法,以及MongoDB secondary節(jié)點(diǎn)出現(xiàn)recovering狀態(tài)的解決方法,文中介紹的非常詳細(xì),需要的朋友可以參考下2018-10-10
Windows系統(tǒng)下安裝Mongodb 3.2.x的步驟詳解
mongodb3.x版本有好多新功能,關(guān)于這方面參考官網(wǎng)即可,下面這篇文章主要給大家介紹了在Windows系統(tǒng)下安裝Mongodb 3.2.x的詳細(xì)步驟,文中介紹的非常詳細(xì),需要的朋友們可以參考學(xué)習(xí),下面來一起看看吧。2017-03-03
在 Fedora 上安裝 MongoDB 服務(wù)器的方法教程
Mongo是一個(gè)高性能、開源、無模式的、面向文檔的數(shù)據(jù)庫,它是最受歡迎的 NoSQL 數(shù)據(jù)庫之一。這篇文章主要介紹了在 Fedora 上安裝 MongoDB 服務(wù)器的方法,需要的朋友可以參考下2020-03-03

