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

【MongoDB】索引 - 数组字段的多键索引

数组字段创建索引时,MongoDB会为数组中的每个元素创建索引键(多键索引),多键索引支持数组字段的高效查询。

一、准备工作

这里准备一些数据

db.shop.insertMany([{_id: 1, name: "水果店1", fruits: ["apple", "orange"]},{_id: 2, name: "水果店2", fruits: ["banana", "apple"]},{_id: 3, name: "水果店3", fruits: ["apple", "banana", "orange"]}
]);

二、创建索引

1、创建索引

db.shop.createIndex({ fruits: 1 });

上面创建了fruits字段的复合索引,其中1代表的是正序排序,-1代表的是倒序排序

2、查询索引

db.shop.getIndexes();

结果如下:

可以看到多了一个名称为fruits_1的索引

三、示例1:匹配一个

1、执行查询

db.shop.find({ fruits: 'banana' });

结果如下:

2、执行过程

db.shop.find({ fruits: 'banana' }).explain();

结果如下:

可以看到查询过程中会使用到索引名称为fruits _1的索引

四、示例2:匹配全部

1、执行查询

db.shop.find({ fruits: ['apple', 'orange'] });

结果如下:

2、执行过程

db.shop.find({ fruits: ['apple', 'orange'] }).explain();

结果如下:

可以看到查询过程中会使用到索引名称为fruits _1的索引

http://www.lryc.cn/news/219680.html

相关文章:

  • 2023.11.5 关于 Spring 创建 和 使用
  • 3D目标检测实战 | 图解KITTI数据集评价指标AP R40(附Python实现)
  • 制作一个ros2机器人需要学习的课本(还不全面)
  • Qt OpenGL相机系统
  • 英语语音识别,语言评测,语音打分实践与代码实现
  • 【SpringBoot篇】SpringBoot整合Mybatis实战
  • android c++ 硬编码硬解码官方demo
  • Python之Excel数据相关
  • Ubuntu网络IP地址一直显示127.0.0.1
  • Vulnhub-DC-3 靶机复现完整过程
  • Dubbo篇---第三篇
  • Redis-使用java代码操作Redis->java连接上redis,java操作redis的常见类型数据存储,redis中的项目应用
  • react 使用笔记
  • Ubuntu下启动Apache对.htaccess 的支持步骤, 利用.htaccess绑定域名到子目录
  • C++常用格式化输出
  • QCC TX 音频输入切换+提示声音
  • 【Java】封装、继承、多态
  • 第九章 异常处理
  • (四) Python Pandas入门
  • 软件测试面试最经典的5个问题
  • 从公共业务提取来看架构演进——功能设置篇
  • Java基础-015-System.java常用类
  • Flutter笔记:发布一个模块 scale_design - (移动端)设计师尺寸适配工具
  • torch增加维度操作
  • 软件测试面试题及答案2024
  • C现代方法(第18章)笔记——声明
  • Spring Data Redis + RabbitMQ - 基于 string + hash 实现缓存,计数(高内聚)
  • 【四、http】go的http的文件下载
  • Java web(六):FilterListenerAJAX
  • 初识jQuery