MongoDB(五)—-MongoDB中的索引类型

MongoDB(五)—-MongoDB中的索引类型

在MongoDB中支持多种类型的索引,包括单字段索引、复合索引、多key索引、文本索引等,每种类型的索引有不同的使用场合。

1.单字段索引

指的是在索引中只包含了一个键,MongoDB默认创建的_Id索引也是这种类型
创建方式:createIndexes({索引键:排序规则})

db.user.createIndex({
   name:1})

2.交叉索引

交叉索引就是为一个集合的多个字段分别建立索引,在查询的时候通过多个字段作为查询条件,这种情况称为交叉索引。
在查询文档时,在查询条件中包含一个交叉索引键或者在一次查询中使用多个交叉索引键作为查询条件都会触发交叉索引。
举例说明:

db.user.createIndex({
   organization:1},{
   background:true})
db.user.createIndex({
   age:1},{
   background:true})
db.user.find({
   $and:[{
   name:"梁牡党"},{
   age:54}]}).explain()

3.复合索引

复合索引是单字段索引的升级版本,它针对多个字段联合创建索引,先按第一个字段排序,第一个字段相同的文档按第二个字段排序,以此类推
语法格式:

db.COLLECTION_NAME.createIndex({
   索引键名:排序规则, 索引键名:排序规则,......});
db.user.createIndex({
   name:1,age:1},{
   background:true});

复合索引能满足的查询场景比单字段索引更丰富,不光能满足多个字段组合起来的查询,也能满足所有能匹配符合索引前缀的查询。
创建复合索引后,按照name或按照name+age两种查询方式都可以触发这个索引。

4.多key索引

当索引的字段为数组时,创建出的索引称为多key索引,多key索引会为数组的每个元素建立一条索引。
语法格式:

db.COLLECTION_NAME.createIndex({
   数组键名:排序规则});
db.c1.createIndex({
   hobby:1},{
   background:true});
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2320.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm 2021.11.3激活(注册激活)

    (pycharm 2021.11.3激活)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • Java中print、printf、println的区别 详解

    Java中print、printf、println的区别 详解Java中print、printf、println的区别详解printf主要是继承了C语言的printf的一些特性,可以进行格式化输出print就是一般的标准输出,但是不换行println和print基本没什么差别,就是最后会换行System.out.printf(“thenumberis:d”,t);参照JAVAAPI的定义如下:’d’整数

  • mysql数据库视图索引_MySQL数据库的视图、索引「建议收藏」

    mysql数据库视图索引_MySQL数据库的视图、索引「建议收藏」视图:根据某个实表查询出来的结果,而生成的一个虚表。注意:1.视图既然作为一张虚表存在,那么对实表的增删改查操作,视图同样成立。2.视图既然根据实表得到,那对视图的增删改查操作,也会影响实表。3.视图在查询过程中,如果有函数,一定要起别名。语法:1.创建视图createview视图名asselect查询语句;2.修改视图alterview视图名asselect查询语句;3….

  • 列举出linux文件和目录常用的命令_查看centos根目录下有哪些内容

    列举出linux文件和目录常用的命令_查看centos根目录下有哪些内容目录命令总览ls(英文全拼:listfiles):列出目录及文件名cd(英文全拼:changedirectory):切换目录pwd(英文全拼:printworkdirectory):显

  • 大数据开发和java开发有什么不同?

    大数据开发和java开发有什么不同?最近发现有些同学并不太了解大数据开发工程师这个职位,所以想简单介绍一下什么是大数据开发工程师,当前互联网公司的数据开发到底是什么样子的?和一般的Java或者PHP工程师在工作上有什么区别?什么不是大数据开发?仅使用数据库(关系型mysql,sqlserver,oracle等非关系型mongoredis等),尽管数据量达到千万级别,亿级别不是大数据开发。从业务系统的数据库中查询数据…

  • THINKPHP AJAX实例代码「建议收藏」

    THINKPHP AJAX实例代码「建议收藏」HTML文件: $(function(){ $(“#filename”).blur(function(){ varvalue=$(this).val(); $.ajax({ type:”GET”, url:”__URL__/ajax_check/name/”+value, dataType:”text”, success:fun

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号