![MongoDB进阶与实战:微服务整合、性能优化、架构管理](https://wfqqreader-1252317822.image.myqcloud.com/cover/697/38209697/b_38209697.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
4.2 单键、复合索引
在MongoDB中,我们可以对集合中的某个字段或某几个字段创建索引,以book实体为例,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_72_1.jpg?sign=1739689270-HT6JfeapRcfpPCX7v9AnVTKk729EzX38-0-66472b819685be59da59c7a00f3649ba)
4.2.1 单字段索引
如果经常使用标题(title)这个字段进行搜索,我们可以为它创建一个单字段的索引,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_72_2.jpg?sign=1739689270-UFt0uuBeLiJLCz72ydSejI9HMPCPx9Vq-0-af18b061f91c68035116a85374cadf59)
这里的“title:1”中的1表示索引采用的是升序排列。然而,在单字段的索引中,使用升序和降序并没有什么差别。
当然,我们也可以对内嵌的文档字段创建索引,比如根据作者的名称进行索引,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_73_1.jpg?sign=1739689270-LGwr3QbY3ifuqA3Zm6C4UmDEQSRBvhlB-0-c29e7c4c681be42754631252cd88499d)
4.2.2 复合索引
复合索引是多个字段组合而成的索引,其性质和单字段索引类似。但不同的是,复合索引中字段的顺序、字段的升降序对查询性能有直接的影响,因此在设计复合索引时则需要考虑不同的查询场景。
如果需要频繁地查询某分类下的book文档排名,那么可以按照分类、收藏数量创建一个复合索引,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_73_2.jpg?sign=1739689270-p2Hq5NOrd6xYk5rmF0FHgvMcZPj0XeUC-0-c33638f5428800d96ca175ac9b5290b6)