node.js mongoose index索引操作
,感興趣的朋友一起看看吧" />

亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

node.js mongoose index索引操作

 更新時(shí)間:2023年12月25日 11:05:26   作者:SuppperSA  
在 Mongoose 中,索引(Index)是一種用于提高查詢(xún)性能的數(shù)據(jù)結(jié)構(gòu),它可以加速對(duì)數(shù)據(jù)庫(kù)中文檔的檢索操作,本文給大家介紹
node.js mongoose index索引操作
,感興趣的朋友一起看看吧

簡(jiǎn)介

在 Mongoose 中,索引(Index)是一種用于提高查詢(xún)性能的數(shù)據(jù)結(jié)構(gòu),它可以加速對(duì)數(shù)據(jù)庫(kù)中文檔的檢索操作

索引類(lèi)型

單索引、復(fù)合索引、文本索引、多鍵索引、哈希索引、地理位置空間索引、通配符索引

單索引

在了解索引之前先看一下mongoDb庫(kù),庫(kù)中集合tours有400條數(shù)據(jù),有slug、ratingAverage、price、summary等字段,接下來(lái)就是對(duì)以上四個(gè)字段做索引

我們查詢(xún)slug為the-forest-hiker的文檔,在 MongoDB 中,explain方法用于獲取有關(guān)查詢(xún)執(zhí)行計(jì)劃的詳細(xì)信息,為Query的原型方法,調(diào)用:const queryInfo = await query.explain(),查看執(zhí)行結(jié)果

其中totalDocsExamined為400,表示掃描了400個(gè)文檔,nReturend為1表示匹配并返回文檔的數(shù)量為1。

查詢(xún)一條數(shù)據(jù)就需要把整個(gè)集合全部掃描效率過(guò)于低,當(dāng)文檔個(gè)數(shù)少的情況下可以忽略查詢(xún)速度,如果文檔個(gè)數(shù)數(shù)以萬(wàn)計(jì),那么就要優(yōu)化查詢(xún)速度,所以需要索引。

為slug添加索引,schema.index({ slug: 1 })  (1表示升序,-1表示降序),再查詢(xún)

tourSchema.index({ slug: 1 });

也可在定義schema的時(shí)候設(shè)置文檔字段的schemaType的index為true

此時(shí)totalDocsExamined為1,表示只掃描了1個(gè)文檔,極大的提高了查詢(xún)速度。

當(dāng)執(zhí)行query后,slug_1的Usage為1,表示索引命中了一次。

復(fù)合索引

tourSchema.index({ price: 1, ratingsAverage: -1 });

同時(shí)為兩個(gè)字段添加索引,表示先對(duì)price進(jìn)行升序,然后在同price的情況下進(jìn)行ratingsAverage降序。

查詢(xún)price大于等于1000并且ratingsAverage大于等于4的文檔,查詢(xún)?cè)敿?xì)信息totalDocsExamined為5,nReturend為5,如果不設(shè)置復(fù)合索引,對(duì)兩個(gè)字段進(jìn)行復(fù)合查詢(xún)的時(shí)候,會(huì)對(duì)全文檔進(jìn)行查詢(xún)匹配。

文本索引

tourSchema.index({ summary: 'text' });
 const doc = await tourModel.find({ $text: { $search: 'National' }});

查詢(xún)信息

如果不創(chuàng)建索引,則掃描全文檔。

多鍵索引是針對(duì)數(shù)組

相關(guān)文章

  • Restify中接入Socket.io報(bào)Error:Can’t set headers的錯(cuò)誤解決

    Restify中接入Socket.io報(bào)Error:Can’t set headers的錯(cuò)誤解決

    這篇文章主要給大家介紹了在Restify中接入Socket.io報(bào)Error:Can’t set headers的錯(cuò)誤解決方法,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • nodejs密碼加密中生成隨機(jī)數(shù)的實(shí)例代碼

    nodejs密碼加密中生成隨機(jī)數(shù)的實(shí)例代碼

    本篇文章主要介紹了nodejs密碼加密中生成隨機(jī)數(shù)的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • 詳解puppeteer使用代理

    詳解puppeteer使用代理

    這篇文章主要介紹了詳解puppeteer使用代理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • nvm安裝指定版本node失敗的解決方法

    nvm安裝指定版本node失敗的解決方法

    工作中,碰到一個(gè)項(xiàng)目需要舊版本的node運(yùn)行(版本為14.21.3),于是我用nvm isntall 14.21.3按照該版本Node, 出現(xiàn)了報(bào)錯(cuò),所以本文記錄一下nvm安裝指定版本node失敗的解決方法,需要的朋友可以參考下
    2025-04-04
  • Node.JS枚舉統(tǒng)計(jì)當(dāng)前文件夾和子目錄下所有代碼文件行數(shù)

    Node.JS枚舉統(tǒng)計(jì)當(dāng)前文件夾和子目錄下所有代碼文件行數(shù)

    這篇文章主要介紹了Node.JS枚舉統(tǒng)計(jì)當(dāng)前文件夾和子目錄下所有代碼文件行數(shù),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • nodejs的路徑問(wèn)題的解決

    nodejs的路徑問(wèn)題的解決

    這篇文章主要介紹了nodejs的路徑問(wèn)題的解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Node.js websocket使用socket.io庫(kù)實(shí)現(xiàn)實(shí)時(shí)聊天室

    Node.js websocket使用socket.io庫(kù)實(shí)現(xiàn)實(shí)時(shí)聊天室

    這篇文章主要為大家詳細(xì)介紹了Node.js websocket使用socket.io庫(kù)實(shí)現(xiàn)實(shí)時(shí)聊天室,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 使用Node.js實(shí)現(xiàn)獲取視頻詳情

    使用Node.js實(shí)現(xiàn)獲取視頻詳情

    這篇文章主要為大家詳細(xì)介紹了如何在Node.js應(yīng)用程序中實(shí)現(xiàn)獲取視頻詳情的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • node.js中express中間件body-parser的介紹與用法詳解

    node.js中express中間件body-parser的介紹與用法詳解

    這篇文章主要給大家介紹了關(guān)于node.js中express中間件body-parser的相關(guān)資料,文章通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • 如何制作一個(gè)Node命令行圖像識(shí)別工具

    如何制作一個(gè)Node命令行圖像識(shí)別工具

    這篇文章主要介紹了如何制作一個(gè)Node命令行圖像識(shí)別工具,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12

最新評(píng)論