node.js mongoose index(索引)

目录

简介

索引类型

单索引

复合索引

文本索引


简介

在 Mongoose 中,索引(Index)是一种用于提高查询性能的数据结构,它可以加速对数据库中文档的检索操作

索引类型

单索引、复合索引、文本索引、多键索引、哈希索引、地理位置空间索引、通配符索引

单索引

在了解索引之前先看一下mongoDb库,库中集合tours有400条数据,有slug、ratingAverage、price、summary等字段,接下来就是对以上四个字段做索引

我们查询slug为the-forest-hiker的文档,在 MongoDB 中,explain方法用于获取有关查询执行计划的详细信息,为Query的原型方法,调用:const queryInfo = await query.explain(),查看执行结果

其中totalDocsExamined为400,表示扫描了400个文档,nReturend为1表示匹配并返回文档的数量为1。

查询一条数据就需要把整个集合全部扫描效率过于低,当文档个数少的情况下可以忽略查询速度,如果文档个数数以万计,那么就要优化查询速度,所以需要索引。

为slug添加索引,schema.index({ slug: 1 })  (1表示升序,-1表示降序),再查询

tourSchema.index({ slug: 1 });

也可在定义schema的时候设置文档字段的schemaType的index为true

此时totalDocsExamined为1,表示只扫描了1个文档,极大的提高了查询速度。

当执行query后,slug_1的Usage为1,表示索引命中了一次。

复合索引

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

同时为两个字段添加索引,表示先对price进行升序,然后在同price的情况下进行ratingsAverage降序。

查询price大于等于1000并且ratingsAverage大于等于4的文档,查询详细信息totalDocsExamined为5,nReturend为5,如果不设置复合索引,对两个字段进行复合查询的时候,会对全文档进行查询匹配。

文本索引

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

查询信息

如果不创建索引,则扫描全文档。

多键索引是针对数组

相关推荐

  1. MongoDB-索引-部分索引

    2023-12-22 20:20:02       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-22 20:20:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-22 20:20:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-22 20:20:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-22 20:20:02       20 阅读

热门阅读

  1. 如何查看计算机(笔记本)设备的SN

    2023-12-22 20:20:02       64 阅读
  2. C语言指针基础题(三)

    2023-12-22 20:20:02       48 阅读
  3. elasticsearch8.5版本集成springboot高版本3.0.0开发

    2023-12-22 20:20:02       33 阅读
  4. 列表的上移动和下移动实现

    2023-12-22 20:20:02       39 阅读
  5. GSON 泛型对象反序列化解决方案

    2023-12-22 20:20:02       42 阅读
  6. k8s中Chart模板流程控制if_with_range和变量

    2023-12-22 20:20:02       40 阅读
  7. Watchdogs

    Watchdogs

    2023-12-22 20:20:02      35 阅读
  8. 基于K-means和形态学算法的叶子病虫害检测

    2023-12-22 20:20:02       40 阅读
  9. 基于FSRCNN的图像超分辨重建算法附Matlab代码

    2023-12-22 20:20:02       38 阅读
  10. [蓝桥杯 2013 省 AB] 错误票据

    2023-12-22 20:20:02       34 阅读