zoukankan      html  css  js  c++  java
  • mongodb高级索引

    考虑以下文档中的用户集合:

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

    上述文档中包含一个 address 子文档 和 标签数组.

    索引数组字段:

    假设我们要搜索基于用户文档的标签。对于这一点,我们将在集合中创建一个索引的标签数组。

    创建索引在数组上,依次创建它的每个字段的单独索引条目。因此,在我们的例子中,当我们在标签数组创建一个索引,单独将创建 music,cricket和blogs 其值的索引。

    要创建标签数组的索引,使用下面的代码:

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

    在创建索引之后,我们可以像这样在集合中搜索标签字段:

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

    要验证正确的索引时,使用以下 explain 命令:

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

    以上的 explain 命令将  "cursor" : "BtreeCursor tags_1" 证实了正确的索引使用。

    索引子文档字段:

    假设我们要根据城市,州和PIN码字段来搜索文档。由于所有这些字段都是地址子文档字段的一部分,我们将在子文档创建所有字段的索引。

    关于子文档的三个字段创建索引,使用下面的代码:

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

    一旦索引被创建,我们可以利用该索引搜索任何子文档字段组成,如下:

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

    请记住,查询表达式必须遵循指定索引的顺序。 所以上面创建的索引将支持以下查询:

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

    它还支持以下查询:

    >db.users.find({"address.city":"LosAngeles","address.state":"California","address.pincode":"123"})
  • 相关阅读:
    Flask目录结构
    RHSA-2019:1880-低危: curl 安全和BUG修复更新 及 RHSA-2019:1884-中危: libssh2 安全更新
    ELK+Logback进行业务日志分析查看
    Maven编译过程中出现的问题
    Zabbix监控服务器磁盘I/O
    创建readonly只读用户脚本
    Zabbix监控多个JVM进程
    redis命令
    docker配置Nginx
    docker基本命令
  • 原文地址:https://www.cnblogs.com/wangjing666/p/6844257.html
Copyright © 2011-2022 走看看