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});
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android 验证码短信验证码,Android​短信验证码倒计时验证的2种常用方式

    android 验证码短信验证码,Android​短信验证码倒计时验证的2种常用方式前言​本文主要介绍的是短信验证码功能,这里总结了两种常用的方式,可以直接拿来使用。看图计时器说明:这里的及时从10开始,是为了演示的时间不要等太长而修改的。方法如下1、第一种方式:Timer/***Description:自定义Timer**CreatedbyMjjon2016/12/4.*/publicclassTimeCountextendsCountDownTimer…

    2022年7月25日
    6
  • 什么是单点登录(原理与实现简介)

    什么是单点登录(原理与实现简介)一、单系统登录机制1、http无状态协议  web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系  但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必…

    2022年7月27日
    4
  • 解决keil注册机和编译错误的问题2020-12-28

    解决keil注册机和编译错误的问题2020-12-28https://72k.us/file804/10165491-428107594这个地址的注册机验证可以有效到2032年。当以前的代码可以编译通过,但是新安装的keil确有大量的编译错误的时候。这个时候可能的原因是配置上没有设置C99Mode。勾选C99Mode是解决这个问题的手段之一。…

    2022年5月2日
    41
  • 【Java-Set转List】

    【Java-Set转List】这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Mar

    2022年10月18日
    0
  • c语言入门教程–-10函数

    c语言入门教程–-10函数

    2021年3月12日
    273
  • Python:画出笛卡尔心形曲线

    Python:画出笛卡尔心形曲线极坐标方程:ρ=a(1−sin⁡θ)\rho=a(1-\sin\theta)ρ=a(1−sinθ)极坐标画图:%matplotlibinlineimportmatplotlib.pyplotaspltimportnumpyasnptheta=np.linspace(0.0,2*np.pi,1000)a=5rho=a*(1-np.sin…

    2022年10月16日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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