提问者:小点点

MongoDB覆盖了两个字段的查询,没有复合索引


是否可以对两个字段执行MongoDB覆盖的查询,例如

db.collection.find( { _id: 1, a: 2 } )

而不具有复合索引,例如

db.collection.ensureIndex( { _id: 1, a: 1 } )

而是只有_id的一个索引(默认情况下是这样的)和字段“a”的另一个索引,如

db.collection.ensureIndex( { a: 1 } )

换句话说,我想知道为了对两个字段执行复盖查询,我是需要一个复合索引还是只需要两个单个(即,不是复合)索引,每个字段一个。


共1个答案

匿名用户

查询只使用一个索引。

您的示例显示作为索引的元素之一?在集合中需要是唯一的,因此创建和其他内容的复合索引是没有意义的。

如果你有:

db.collection.ensureIndex( { a: 1, b: 1 })

然后,您可以根据需要单独使用索引,也可以将作为复合索引使用。