考虑以下 users 集合的文档-
{ "address": { "city": "Los Angeles", "state": "California", "pincode": "123" }, "tags": [ "music", "cricket", "blogs" ], "name": "Tom Benzamin" }
上面的文档包含一个 address子文档和一个 tags数组。
假设无涯教程要根据用户的标签搜索用户文档,为此,无涯教程将在集合中的标签数组上创建索引。
依次在数组上创建索引将为其每个字段创建单独的索引条目。
要在标签数组上创建索引,请使用以下代码-
>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"})
请记住,查询表达式必须遵循指定索引的顺序。因此,上面创建的索引将支持以下查询-
链接:https://www.learnfk.comhttps://www.learnfk.com/mongodb/mongodb-advanced-indexing.html
来源:LearnFk无涯教程网
>db.users.find({"address.city":"Los Angeles","address.state":"California"})
它还将支持以下查询-
>db.users.find({"address.city":"LosAngeles","address.state":"California", "address.pincode":"123"})
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)