node.js mongoose index索引操作
node.js mongoose index索引操作
,感興趣的朋友一起看看吧
簡介
在 Mongoose 中,索引(Index)是一種用于提高查詢性能的數(shù)據(jù)結(jié)構(gòu),它可以加速對數(shù)據(jù)庫中文檔的檢索操作
索引類型
單索引、復(fù)合索引、文本索引、多鍵索引、哈希索引、地理位置空間索引、通配符索引
單索引
在了解索引之前先看一下mongoDb庫,庫中集合tours有400條數(shù)據(jù),有slug、ratingAverage、price、summary等字段,接下來就是對以上四個字段做索引
我們查詢slug為the-forest-hiker的文檔,在 MongoDB 中,explain方法用于獲取有關(guān)查詢執(zhí)行計劃的詳細信息,為Query的原型方法,調(diào)用:const queryInfo = await query.explain(),查看執(zhí)行結(jié)果
其中totalDocsExamined為400,表示掃描了400個文檔,nReturend為1表示匹配并返回文檔的數(shù)量為1。
查詢一條數(shù)據(jù)就需要把整個集合全部掃描效率過于低,當文檔個數(shù)少的情況下可以忽略查詢速度,如果文檔個數(shù)數(shù)以萬計,那么就要優(yōu)化查詢速度,所以需要索引。
為slug添加索引,schema.index({ slug: 1 }) (1表示升序,-1表示降序),再查詢
tourSchema.index({ slug: 1 });
也可在定義schema的時候設(shè)置文檔字段的schemaType的index為true
此時totalDocsExamined為1,表示只掃描了1個文檔,極大的提高了查詢速度。
當執(zhí)行query后,slug_1的Usage為1,表示索引命中了一次。
復(fù)合索引
tourSchema.index({ price: 1, ratingsAverage: -1 });
同時為兩個字段添加索引,表示先對price進行升序,然后在同price的情況下進行ratingsAverage降序。
查詢price大于等于1000并且ratingsAverage大于等于4的文檔,查詢詳細信息totalDocsExamined為5,nReturend為5,如果不設(shè)置復(fù)合索引,對兩個字段進行復(fù)合查詢的時候,會對全文檔進行查詢匹配。
文本索引
tourSchema.index({ summary: 'text' });
const doc = await tourModel.find({ $text: { $search: 'National' }});
查詢信息
如果不創(chuàng)建索引,則掃描全文檔。
多鍵索引是針對數(shù)組
- node.js連接mongoose數(shù)據(jù)庫方法詳解
- node.js使用mongoose操作數(shù)據(jù)庫實現(xiàn)購物車的增、刪、改、查功能示例
- node.js利用mongoose獲取mongodb數(shù)據(jù)的格式化問題詳解
- Node.js+jade+mongodb+mongoose實現(xiàn)爬蟲分離入庫與生成靜態(tài)文件的方法
- Node.js中使用mongoose操作mongodb數(shù)據(jù)庫的方法
- Node.js的MongoDB驅(qū)動Mongoose基本使用教程
- 安裝使用Mongoose配合Node.js操作MongoDB的基礎(chǔ)教程
相關(guān)文章
Restify中接入Socket.io報Error:Can’t set headers的錯誤解決
這篇文章主要給大家介紹了在Restify中接入Socket.io報Error:Can’t set headers的錯誤解決方法,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03Node.JS枚舉統(tǒng)計當前文件夾和子目錄下所有代碼文件行數(shù)
這篇文章主要介紹了Node.JS枚舉統(tǒng)計當前文件夾和子目錄下所有代碼文件行數(shù),本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08Node.js websocket使用socket.io庫實現(xiàn)實時聊天室
這篇文章主要為大家詳細介紹了Node.js websocket使用socket.io庫實現(xiàn)實時聊天室,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02node.js中express中間件body-parser的介紹與用法詳解
這篇文章主要給大家介紹了關(guān)于node.js中express中間件body-parser的相關(guān)資料,文章通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-05-05