Mongo 2.6引入了Index Intersection。在我看来,无论使用复合索引可以实现什么,使用索引交点都可以更容易地实现,并且具有更大的灵活性(因为它可以支持更多类型的查询)。 但是,Mongo的文档说:
索引交集不会消除创建复合索引的需要。 (Link)
然后继续解释使用复合指数相对于指数交叉点的缺点。我无法理解使用此类索引的优势是什么,而不是让mongo与几个索引相交以完成查询。
编辑:我建议阅读他的答案中提供的link @Sammaye,以便详细解释Mongo的开发David Storch的指数交叉与复合指数。底线:
指数交叉点不应被视为复合指数的替代
答案 0 :(得分:3)
要回答的几点可能是:
默认情况下,索引交叉点已启用。查询计划程序目前一次将自己限制为2个索引,但此限制可能在将来增加。
索引交叉不是复合索引的替代品,而仅仅是在您没有真正选择时使用的$where
。索引交叉不是在集合中查找文档的最快,也不是最可扩展的方式,因此您必须小心使用多少交叉点。
还可以注意到MongoDB可以与哪些索引相交的限制:http://docs.mongodb.org/manual/core/index-intersection/#index-intersection-and-sort