![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=1738855736-ZhSW4zx4FCokDTfsxs2rETymwLwAmUa0-0-ce786d4293f8ac6f081359f680049ddb)
4.2.1 单字段索引
如果经常使用标题(title)这个字段进行搜索,我们可以为它创建一个单字段的索引,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_72_2.jpg?sign=1738855736-XoNWtnOmYRunOXFyt2IoqSnuBpyRN7Yo-0-5913984b668293f482a57b37d10e2a9e)
这里的“title:1”中的1表示索引采用的是升序排列。然而,在单字段的索引中,使用升序和降序并没有什么差别。
当然,我们也可以对内嵌的文档字段创建索引,比如根据作者的名称进行索引,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_73_1.jpg?sign=1738855736-SwNStTxcQ0WHeLGyiyfZ2jBoKf9dbwib-0-46455786f6c6169781f44e80daacaf49)
4.2.2 复合索引
复合索引是多个字段组合而成的索引,其性质和单字段索引类似。但不同的是,复合索引中字段的顺序、字段的升降序对查询性能有直接的影响,因此在设计复合索引时则需要考虑不同的查询场景。
如果需要频繁地查询某分类下的book文档排名,那么可以按照分类、收藏数量创建一个复合索引,代码如下:
![](https://epubservercos.yuewen.com/6F449D/20118171608699906/epubprivate/OEBPS/Images/40827_73_2.jpg?sign=1738855736-3dLJhdUkTSCYkOaHgV6fS3C9swYw7LZb-0-4c850421c2516bd1db90ecdadcf831c0)