mongodb的复合索引是怎么回事?例如db.a.ensureIndex({i:1,j:-1});

上面这个索引按照 i 升序排列,按照 j 降序排列。以我对索引的了解,索引会对键进行排序,这个键应该对应复合索引这个整体,上面那个复合索引居然同时能升序和降序,求大神指点。。。,,急求
最新回答
长发及腰已是过去

2026-10-24 07:36:33

复合索引或者是索引的目的是方便后续的查找,在在MongoDB中, 数字1表示i键的索引按升序存储,-1表示j键的索引按照降序方式存储。
> db.test.ensureIndex({"i":1,
"j":-1})
该索引被创建后,基于i和j的查询将会用到该索引,或者是基于i的查询也会用到该索引,但是只是基于j的查询将不会用到该复合索引。因此可以说,如果想用到复合索引,必须在查询条件中包含复合索引中的前N个索引列。然而如果查询条件中的键值顺序和复合索引中的创建顺序不一致的话,MongoDB可以智能的帮助我们调整该顺序,以便使复合索引可以为查询所用。
所以这个索引主要是为了建立一个数据的排放方式方便后续的查找,但是对于一个键的排序只有一个方向,但是不同的键排序方向可以不一样。