mongodb索引生成HTML页面,MongoDB高级索引

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

{

"address": {

"city": "Haikou",

"province": "Hainan",

"pincode": "123456"

},

"tags": [

"music",

"cricket",

"blogs"

],

"name": "Maxsu"

}

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

索引数组字段

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

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

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

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

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

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

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

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

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

索引子文档字段

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

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

>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"})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值