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

news/2024/11/29 19:57:43/

数组字段创建索引时,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.ppmy.cn/news/1201200.html

相关文章

Ubuntu下启动Apache对.htaccess 的支持步骤, 利用.htaccess绑定域名到子目录

Ubuntu下启动Apache对.htaccess 的支持步骤 1. 终端运行 sudo a2enmod 程序提示可供激活的模块名称,输入: rewrite 2. 修改/etc/apache2/sites-enabled/000-default (该链接指向的是站点配置文件) 把(默认的www目录、或者需要应用.htacc…

java.sql.SQLSyntaxErrorException: Unknown column ‘id‘ in ‘field list‘

java.sql.SQLSyntaxErrorException: Unknown column ‘id‘ in ‘field list‘ 说明在执行sql语句的时候,操作表里没有id这个字段。 可能的情况: 表名错误。列名拼写错误:大小也要匹配表别名:如果在查询中使用了表别名&#xf…

python web框架 flask基础入门教程

python web框架 flask基础入门教程 今天我们写一个flask基础入门教程,当然也会覆盖很多重要的知识点,在这篇博客中,我们主要会讲解如下内容: 1、通过flask框架向web传输和接收参数 2、实现静态图片插入和图书上传 3、实现搭建…

Python教程:打印自己的名字

要打印的名字是:PYTHON …######… …#…#… …######… …#… …#… …#…#… …#…#… …##… …##… …##… …######… …##… …##… …##… …##… …#…#… …#…#… …######… …#…#… …#…#… …######… …#…#… …#…#… …#…#… …######… ……

QtC++与QLabel详解

介绍 QLabel 类是Qt中的一个用于显示文本或图像的控件类,通常用于用户界面中以提供静态文本或图片显示的功能。以下是对QLabel在Qt中的作用的详细解释: 文本和图像显示: QLabel 可以用来显示文本和图像。这使得它成为显示标签、标题、说明或…

QTcpServer 封装

来一段自封装,在用的QTcpserver,不用去找boost,或是poco,libevent……,也不用去从底层winsocket封装开始,真不用去那么折腾,放着QT自带的不用,那不仅是可惜,是辜负了QT团队的一片苦心…… #pragma once #i…

read 方法为什么返回 int 类型

在Java的输入流(InputStream)中,read方法返回int类型的值的原因是为了提供更多的信息和灵活性。虽然这可能看起来有些不直观,但有一些合理的考虑和用途,主要包括以下几点: EOF标志:read方法返回…

[科研图像处理]用matlab平替image-j,有点麻烦,但很灵活!

做材料与生物相关方向的同学应该对image-j并不陌生,前几天有个师兄拜托我用image-j分析一些图片,但使用过后发现我由于不了解image-j的工作流程而对结果并不确信,而且image-j的功能无法拓展,对有些图片的处理效果并不好&#xff0…