MongoDB高级索引

/ / MongoDB高级索引

考虑以下 users 集合的文档-

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

上面的文档包含一个 address子文档和一个 tags数组。

索引数组字段

假设无涯教程要根据用户的标签搜索用户文档,为此,无涯教程将在集合中的标签数组上创建索引。

依次在数组上创建索引将为其每个字段创建单独的索引条目。

链接:https://www.learnfk.comhttps://www.learnfk.com/mongodb/mongodb-advanced-indexing.html

来源:LearnFk无涯教程网

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

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

创建索引后,无涯教程可以像这样搜索集合的标签字段-

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

要验证是否使用了正确的索引编制,请使用以下 explain 命令-

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

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

索引文档字段

假设无涯教程要根据城市,州和邮编号字段搜索文档,由于所有这些字段都是地址子文档字段的一部分,因此无涯教程将在子文档的所有字段上创建索引。

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

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

祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)

精选教程推荐

👇 以下精选教程可能对您有帮助,拓展您的技术视野

AI重塑测试开发系统实践 -〔陈磊〕

玩转 AI 办公提效工具 -〔尹会生〕

玩转AI创意写作 -〔于菁健〕

AI原生应用入门课 -〔李梦冉/程默〕

手写Python虚拟机 -〔海纳〕

AI大模型企业应用实战 -〔蔡超〕

说透低代码 -〔陈旭〕

技术面试官识人手册 -〔熊燚(四火)〕

RPC实战与核心原理 -〔何小锋〕

📝 好记忆不如烂笔头,留下您的学习笔记吧!

暂无学习笔记,成为第一个分享的人吧!

您的笔记将帮助成千上万的学习者