当前位置: 首页 > news >正文

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' }});

查询信息

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

多键索引是针对数组

相关文章:

node.js mongoose index(索引)

目录 简介 索引类型 单索引 复合索引 文本索引 简介 在 Mongoose 中,索引(Index)是一种用于提高查询性能的数据结构,它可以加速对数据库中文档的检索操作 索引类型 单索引、复合索引、文本索引、多键索引、哈希索引、地理…...

谷歌推大语言模型VideoPoet:文本图片皆可生成视频和音频

Google Research最近发布了一款名为VideoPoet的大型语言模型(LLM),旨在解决当前视频生成领域的挑战。该领域近年来涌现出许多视频生成模型,但在生成连贯的大运动时仍存在瓶颈。现有领先模型要么生成较小的运动,要么在生…...

ES-mapping

类似数据库中的表结构定义,主要作用如下 定义Index下的字段名( Field Name) 定义字段的类型,比如数值型、字符串型、布尔型等定义倒排索引相关的配置,比如是否索引、记录 position 等 index_options 用于控制倒排索记录的内容,有如…...

Centos 7.9安装Oracle19c步骤亲测可用有视频

视频介绍了在虚拟机安装centos 7.9并安装数据库软件的全过程 视频链接:https://www.zhihu.com/zvideo/1721267375351996416 下面的文字描述是安装数据库的部分介绍 一.安装环境准备 链接:https://pan.baidu.com/s/1Ogn47UZQ2w7iiHAiVdWDSQ 提取码&am…...

.NET中的Swagger使用

目录 前言 一、Swagger是什么? 二、如何Swagger文档说明的信息 1.在AddSwaggerGen方法中写入文档信息 2.运行效果 二、文档UI界面标题、路由设置 1.在中间件UseSwaggerUI方法中配置 三、文档UI界面添加接口注释 1.在 .csproj中配置 2.在AddSwaggerGen方法中配置Incl…...

结构屈曲分析

结构屈曲分析主要用于判定结构受载后是否有失稳风险,作为工程应用,一般分为线性屈曲分析和非线性屈曲分析。 线性屈曲分析需要具备较多的前提条件,如载荷无偏心、材料无缺陷等,在实际工程应用中结构制作过程和加载方式很难达到线性…...

Flink 客户端操作命令及可视化工具

Flink提供了丰富的客户端操作来提交任务和与任务进行交互。下面主要从Flink命令行、Scala Shell、SQL Client、Restful API和 Web五个方面进行整理。 在Flink安装目录的bin目录下可以看到flink,start-scala-shell.sh和sql-client.sh等文件,这些都是客户…...

csrf自动化检测调研

https://github.com/pillarjs/understanding-csrf/blob/master/README_zh.md CSRF 攻击者在钓鱼站点&#xff0c;可以通过创建一个AJAX按钮或者表单来针对你的网站创建一个请求&#xff1a; <form action"https://my.site.com/me/something-destructive" metho…...

记录一个Python鼠标自动模块用法和selenium加载网页插件的设置

写爬虫&#xff0c;或者网页自动化&#xff0c;让程序自动完成一些重复性的枯燥的网页操作&#xff0c;是最常见的需求。能够解放双手&#xff0c;空出时间看看手机&#xff0c;或者学习别的东西&#xff0c;甚至还能帮朋友亲戚减轻工作量。 然而&#xff0c;网页自动化代码编写…...

【数据库系统概论】第3章-关系数据库标准语言SQL(1)

文章目录 3.1 SQL概述3.2 学生-课程数据库3.3 数据定义3.3.1 数据库定义3.3.2 模式的定义3.3.3 基本表的定义3.3.4 索引的建立与删除3.3.5 数据字典 3.1 SQL概述 动词 分类 三级模式 3.2 学生-课程数据库 3.3 数据定义 3.3.1 数据库定义 创建数据库 tips&#xff1a;[ ]表…...

【Python】基于flaskMVT架构与session实现博客前台登录登出功能

目录 一、MVT说明 1.Model层 2.View层 3.Template层 二、功能说明 三、代码框架展示 四、具体代码实现 models.py 登录界面前端代码 博客界面前端代码&#xff08;profile.html&#xff09; main.py 一、MVT说明 MVT架构是Model-View-Template的缩写&#xff0c;是…...

为什么有的开关电源需要加自举电容?

一、什么是自举电路&#xff1f; 1.1 自举的概念 首先&#xff0c;自举电路也叫升压电路&#xff0c;是利用自举升压二极管&#xff0c;自举升压电容等电子元件&#xff0c;使电容放电电压和电源电压叠加&#xff0c;从而使电压升高。有的电路升高的电压能达到数倍电源电压。…...

【MCAL】TC397+EB-treso之MCU配置实战 - 芯片时钟

本篇文章介绍了在TC397平台使用EB-treso对MCU驱动模块进行配置的实战过程&#xff0c;主要介绍了后续基本每个外设模块都要涉及的芯片时钟部分&#xff0c;帮助读者了解TC397芯片的时钟树结构&#xff0c;在后续计算配置不同外设模块诸如通信速率&#xff0c;定时器周期等&…...

高级人工智能之群体智能:蚁群算法

群体智能 鸟群&#xff1a; 鱼群&#xff1a; 1.基本介绍 蚁群算法&#xff08;Ant Colony Optimization, ACO&#xff09;是一种模拟自然界蚂蚁觅食行为的优化算法。它通常用于解决路径优化问题&#xff0c;如旅行商问题&#xff08;TSP&#xff09;。 蚁群算法的基本步骤…...

【SpringBoot应用篇】【AOP+注解】SpringBoot+SpEL表达式基于注解实现权限控制

【SpringBoot应用篇】【AOP注解】SpringBootSpEL表达式基于注解实现权限控制 Spring SpEL基本表达式类相关表达式表达式模板 SpEL表达式实现权限控制PreAuthAuthFunPreAuthAspectUserControllerSpelParserUtils Spring SpEL Spring 表达式语言 SpEL 是一种非常强大的表达式语言…...

Java研学-HTTP 协议

一 概述 1 概念和作用 概念&#xff1a;HTTP 是 HyperText Transfer Protocol (超文本传输协议)的简写&#xff0c;它是 TCP/IP 协议之上的一个应用层协议。简单理解就是 HTTP 协议底层是对 TCP/IP 协议的封装。   作用&#xff1a;用于规定浏览器和服务器之间数据传输的格式…...

差生文具多之(二): perf

栈回溯和符号解析是使用 perf 的两大阻力&#xff0c;本文以应用程序 fio 的观测为例子&#xff0c;提供一些处理它们的经验法则&#xff0c;希望帮助大家无痛使用 perf。 前言 系统级性能优化通常包括两个阶段&#xff1a;性能剖析和代码优化&#xff1a; 性能剖析的目标是寻…...

【SPI和API有什么区别】

✅什么是SPI&#xff0c;和API有什么区别 ✅典型解析&#x1f7e2;拓展知识仓&#x1f7e2;如何定义一个SPI&#x1f7e2;SPI的实现原理 ✅SPI的应用场景SpringDubbo ✅典型解析 Java 中区分 API和 SPI&#xff0c;通俗的进: API和 SPI 都是相对的概念&#xff0c;他们的差别只…...

Day67力扣打卡

打卡记录 美丽塔 II&#xff08;前缀和 单调栈&#xff09; 链接 class Solution:def maximumSumOfHeights(self, maxHeights: List[int]) -> int:n len(maxHeights)stack collections.deque()pre, suf [0] * n, [0] * nfor i in range(n):while stack and maxHeights…...

什么是网站监控?

网站监控是跟踪网站的可用性和性能&#xff0c;以最小化宕机时间&#xff0c;优化性能并确保顺畅的用户体验。维护网站正常运行对于任何企业来说都是至关重要的&#xff0c;因而对大多数业务来说&#xff0c;网站应用监控都是一个严峻的挑战。Applications Manager网站应用监控…...

GEO优化实操框架:GEO优化的正确姿势是“带着答案去找客户”

如果你是B2B企业的老板或市场负责人&#xff0c;你一定听过这句话&#xff1a; “我们网上曝光是不少&#xff0c;但来的询盘都不对——问价格的比问方案的还多&#xff0c;还有不少是学生做调研的。” 这不是你一个人遇到的问题。这是传统SEO和竞价广告的天然缺陷——你只能“…...

从日志到环境变量:根治 Android Studio AVD 启动报错“The emulator process has terminated”

1. 从错误弹窗到日志分析&#xff1a;定位问题的第一步 当你兴冲冲地打开Android Studio准备启动AVD&#xff08;Android Virtual Device&#xff09;时&#xff0c;突然弹出一个冰冷的提示框&#xff1a;"The emulator process has terminated"&#xff0c;这感觉就…...

LVGUI字体瘦身实战:如何为你的IoT设备定制一个超小的中文字体库

LGVUI字体瘦身实战&#xff1a;为IoT设备定制超小中文字体库的工程化解决方案 在嵌入式物联网设备开发中&#xff0c;每一KB的Flash和RAM都弥足珍贵。当你的智能温控器需要显示"当前温度&#xff1a;25℃"或者电子秤要呈现"净重&#xff1a;0.5kg"时&#…...

高效视频帧提取终极指南:为深度学习构建专业数据集

高效视频帧提取终极指南&#xff1a;为深度学习构建专业数据集 【免费下载链接】video2frame Yet another easy-to-use tool to extract frames from videos, for deep learning and computer vision. 项目地址: https://gitcode.com/gh_mirrors/vi/video2frame 在计算机…...

跨越平台限制:如何用WorkshopDL免费获取Steam创意工坊模组

跨越平台限制&#xff1a;如何用WorkshopDL免费获取Steam创意工坊模组 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为Epic Games或GOG平台无法访问Steam创意工坊而烦恼吗…...

UEFITool终极指南:轻松解析和编辑UEFI固件的开源利器

UEFITool终极指南&#xff1a;轻松解析和编辑UEFI固件的开源利器 【免费下载链接】UEFITool UEFI firmware image viewer and editor 项目地址: https://gitcode.com/gh_mirrors/ue/UEFITool 你是否曾好奇计算机启动时底层发生了什么&#xff1f;想要深入了解UEFI固件的…...

可穿戴电子模块化连接方案:5mm微型按扣实现电路板与织物的可插拔连接

1. 项目概述与核心思路在折腾可穿戴电子项目时&#xff0c;最让人头疼的问题之一&#xff0c;就是如何让电路板与衣物既可靠连接&#xff0c;又能方便地拆下来。传统的做法要么是用导电胶带粘&#xff08;不牢靠、易氧化&#xff09;&#xff0c;要么是直接把线焊死在板子上然后…...

三维重建实时映射技术在智慧水利中的核心应用

三维重建实时映射技术在智慧水利中的核心应用在国家大力推进数字孪生水利建设、实现水安全精准保障的背景下&#xff0c;智慧水利已从传统监测、调度向全域感知、智能预判、协同处置、一屏统管升级。智慧水利的核心目标&#xff0c;是实现对江河湖库、灌区、泵站、堤坝、闸站等…...

DIY便携FPV地面站:从电路设计到3D打印的完整制作指南

1. 项目概述&#xff1a;为什么需要一个便携式FPV地面站&#xff1f;玩FPV&#xff08;第一人称视角&#xff09;飞行&#xff0c;无论是竞速穿越还是航拍探索&#xff0c;最核心的体验就是那块屏幕。大多数飞手依赖FPV眼镜带来的沉浸感&#xff0c;但在很多场景下&#xff0c;…...

SVG与CSS变量驱动的自动化品牌视觉生成技术实践

1. 项目概述&#xff1a;一分钟品牌塑造的实践宝库在品牌营销和创意设计领域&#xff0c;一个常见的痛点是如何快速、高效地生成高质量的视觉品牌资产。无论是初创公司需要一个临时的Logo&#xff0c;还是内容创作者想为新的系列视频设计一个统一的片头&#xff0c;传统的品牌设…...