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

时间:2013-01-12 18:59:57

标签: mongodb mongodb-query

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

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

没有具有复合索引,例如

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

但是只有一个_id索引(默认情况下会得到)和另一个字段“a”的索引,如

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

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

1 个答案:

答案 0 :(得分:2)

查询仅使用一个index

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

如果您改为:

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

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