开心档-软件开发入门之MongoDB 高级索引

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 本章将会讲解在数组中创建索引,需要对数组中的每个字段依次建立索引。所以在我们为数组 tags 创建索引时,会为 music、cricket、blogs三个值建立单独的索引。

 image.gif

    • 作者简介:每天分享MongoDB教程的学习经验、和学习笔记。
    • 座右铭:有自制力,做事有始有终;学习能力强,愿意不断地接触学习新知识。
    • 个人主页:雪奈ie的主页

    前言

    本章将会讲解在数组中创建索引,需要对数组中的每个字段依次建立索引。所以在我们为数组 tags 创建索引时,会为 music、cricket、blogs三个值建立单独的索引。

    目录

    MongoDB 高级索引

    索引数组字段

    索引子文档字段


    MongoDB 高级索引

    考虑以下文档集合(users ):

    {
       "address": {
          "city": "Los Angeles",
          "state": "California",
          "pincode": "123"
       },
       "tags": [
          "music",
          "cricket",
          "blogs"
       ],
       "name": "Tom Benzamin"
    }

    image.gif

    以上文档包含了 address 子文档和 tags 数组。


    索引数组字段

    假设我们基于标签来检索用户,为此我们需要对集合中的数组 tags 建立索引。

    在数组中创建索引,需要对数组中的每个字段依次建立索引。所以在我们为数组 tags 创建索引时,会为 music、cricket、blogs三个值建立单独的索引。

    使用以下命令创建数组索引:

    >db.users.ensureIndex({"tags":1})

    image.gif

    创建索引后,我们可以这样检索集合的 tags 字段:

    >db.users.find({tags:"cricket"})

    image.gif

    为了验证我们使用使用了索引,可以使用 explain 命令:

    >db.users.find({tags:"cricket"}).explain()

    image.gif

    以上命令执行结果中会显示 "cursor" : "BtreeCursor tags_1" ,则表示已经使用了索引。


    索引子文档字段

    假设我们需要通过city、state、pincode字段来检索文档,由于这些字段是子文档的字段,所以我们需要对子文档建立索引。

    为子文档的三个字段创建索引,命令如下:

    >db.users.ensureIndex({"address.city":1,"address.state":1,"address.pincode":1})

    image.gif

    一旦创建索引,我们可以使用子文档的字段来检索数据:

    >db.users.find({"address.city":"Los Angeles"})

    image.gif

    查询表达不一定遵循指定的索引的顺序,mongodb 会自动优化。所以上面创建的索引将支持以下查询:

    >db.users.find({"address.state":"California","address.city":"Los Angeles"})

    image.gif

    同样支持以下查询:

    >db.users.find({"address.city":"Los Angeles","address.state":"California","address.pincode":"123"})

    image.gif

    下一篇

    MongoDB 聚合

    相关文章
    |
    7月前
    |
    存储 NoSQL MongoDB
    微服务——MongoDB常用命令——MongoDB索引知识概述
    本文介绍MongoDB索引相关知识,包括其在查询中的重要作用。索引可避免全集合扫描,显著提升查询效率,尤其在处理海量数据时。通过B树数据结构存储字段值并排序,支持相等匹配、范围查询及排序操作。文中还提供了官方文档链接以供深入学习。
    101 0
    |
    7月前
    |
    存储 NoSQL MongoDB
    微服务——MongoDB常用命令——MongoDB索引的类型
    本节介绍了MongoDB中索引的几种类型及其特点。包括单字段索引,支持升序/降序排序,索引顺序对操作无影响;复合索引,字段顺序重要,可实现多级排序;地理空间索引,支持平面与球面几何查询;文本索引,用于字符串搜索并存储词根;哈希索引,基于字段值散列,适合等值匹配但不支持范围查询。
    180 1
    微服务——MongoDB常用命令——MongoDB索引的类型
    |
    7月前
    |
    存储 NoSQL 定位技术
    MongoDB索引知识
    MongoDB索引是提升查询性能的关键工具,通过构建特殊的数据结构(如B树)优化数据访问路径。无索引时,查询需全集合扫描,时间复杂度为O(n);使用索引后可降至O(log n),实现毫秒级响应。MongoDB支持多种索引类型:单字段索引适用于高频单字段查询;复合索引基于最左前缀原则优化多条件过滤和排序;专业索引包括地理空间索引(支持LBS服务)、文本索引(全文搜索)和哈希索引(分片键优化)。合理选择和优化索引类型,可显著提升数据库性能。建议使用explain()分析查询计划,并定期清理冗余索引。
    |
    11月前
    |
    存储 NoSQL 关系型数据库
    MongoDB索引知识
    MongoDB索引知识
    96 1
    MongoDB索引知识
    |
    11月前
    |
    存储 NoSQL MongoDB
    MongoDB 索引限制
    10月更文挑战第22天
    183 2
    |
    11月前
    |
    NoSQL MongoDB 索引
    MongoDB 高级索引
    10月更文挑战第22天
    85 2
    |
    12月前
    |
    NoSQL MongoDB 索引
    MongoDB 覆盖索引查询
    10月更文挑战第21天
    112 1
    |
    3月前
    |
    NoSQL MongoDB 数据库
    数据库数据恢复—MongoDB数据库数据恢复案例
    MongoDB数据库数据恢复环境: 一台操作系统为Windows Server的虚拟机上部署MongoDB数据库。 MongoDB数据库故障: 工作人员在MongoDB服务仍然开启的情况下将MongoDB数据库文件拷贝到其他分区,数据复制完成后将MongoDB数据库原先所在的分区进行了格式化操作。 结果发现拷贝过去的数据无法使用。管理员又将数据拷贝回原始分区,MongoDB服务仍然无法使用,报错“Windows无法启动MongoDB服务(位于 本地计算机 上)错误1067:进程意外终止。”
    |
    3月前
    |
    缓存 NoSQL Linux
    在CentOS 7系统中彻底移除MongoDB数据库的步骤
    以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
    290 79
    |
    3月前
    |
    存储 NoSQL MongoDB
    MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
    MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉
    177 8
    MongoDB数据库详解-针对大型分布式项目采用的原因以及基础原理和发展-卓伊凡|贝贝|莉莉

    推荐镜像

    更多