开心档-软件开发入门之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 聚合

    相关实践学习
    MongoDB数据库入门
    MongoDB数据库入门实验。
    快速掌握 MongoDB 数据库
    本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
    相关文章
    |
    3月前
    |
    存储 NoSQL MongoDB
    掌握MongoDB索引优化策略:提升查询效率的关键
    在数据库性能调优中,索引是提升查询效率的利器。本文将带你深入了解MongoDB索引的内部工作原理,探讨索引对查询性能的影响,并通过实际案例指导如何针对不同的查询模式建立有效的索引。不仅将涵盖单一字段索引,还会探讨复合索引的使用,以及如何通过分析查询模式和执行计划来优化索引,最终实现查询性能的最大化。
    |
    2月前
    |
    存储 NoSQL 关系型数据库
    MongoDB索引知识
    MongoDB索引知识
    32 1
    MongoDB索引知识
    |
    2月前
    |
    存储 NoSQL MongoDB
    MongoDB 索引限制
    10月更文挑战第22天
    46 2
    |
    2月前
    |
    NoSQL MongoDB 索引
    MongoDB 高级索引
    10月更文挑战第22天
    36 2
    |
    3月前
    |
    存储 NoSQL MongoDB
    MongoDB入门级别教程全(Windows版,保姆级教程)
    一份全面的MongoDB入门级教程,包括在Windows系统上安装MongoDB、使用MongoDB Shell和Compass GUI进行数据库操作,以及MongoDB的基本数据类型和查询技巧。
    108 2
    MongoDB入门级别教程全(Windows版,保姆级教程)
    |
    3月前
    |
    NoSQL MongoDB 索引
    MongoDB 覆盖索引查询
    10月更文挑战第21天
    39 1
    |
    3月前
    |
    存储 NoSQL MongoDB
    MongoDB 索引
    MongoDB 索引
    35 3
    |
    4月前
    |
    存储 NoSQL 关系型数据库
    MongoDB中的索引操作总结
    这篇文章总结了MongoDB中索引的概念、创建方法、常见操作指令、限制以及索引对查询效率的影响。
    68 2
    |
    11天前
    |
    存储 JSON NoSQL
    学习 MongoDB:打开强大的数据库技术大门
    MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
    46 15
    |
    19天前
    |
    存储 NoSQL 关系型数据库
    阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板
    我们的风控系统引入阿里云数据库MongoDB版后,解决了特征类字段灵活加减的问题,大大提高了开发效率,极大的提升了业务用户体验,获得了非常好的效果
    阿里云数据库MongoDB版助力信也科技 打造互联网金融企业样板