MongoDB 专题
您的位置:database > MongoDB专题 > MongoDB高级索引
MongoDB高级索引
作者:--    发布时间:2019-11-20

在这一章节中,我们来学习高级索引,假设users集合的以下文档 -

{
   "address": {
      "city": "haikou",
      "province": "hainan",
      "pincode": "123456"
   },
   "tags": [
      "music",
      "cricket",
      "blogs"
   ],
   "name": "maxsu"
}

上述文档包含地址子文档和标签数组。

索引数组字段

假设要根据用户的标签搜索用户文档。为此,我们将在集合中的tags数组上创建一个索引。

在数组上创建一个索引依次为每个字段创建单独的索引条目。所以在这个例子中,当在tags数组上创建一个索引时,将为其值musiccricketblogs创建单独的索引。

要在tags数组上创建索引,请使用以下代码 -

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

创建索引后,可以搜索这个集合的标签字段 -

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

要验证是否使用正确的索引,请使用以下说明命令 -

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

上面的命令生成:“cursor”:“btreecursor tags_1”,它确认使用了正确的索引。

索引子文档字段

假设要搜索基于cityprovincepincode字段的文档。 由于所有这些字段都是地址子文档字段的一部分,因此将在子文档的所有字段上创建一个索引。

要在子文档的所有三个字段上创建索引,请使用以下代码 -

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

创建索引后,就可以使用此索引来搜索任何子文档的字段了,如下所示:

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

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

>db.users.find({"address.city":"haikou","address.province":"hainan"})

它还将支持以下查询 -

>db.users.find({"address.city":"haikou","address.province":"hainan",
   "address.pincode":"12345"})

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册