您是否可以为两个字段执行MongoDB覆盖的查询,例如
db.collection.find( { _id: 1, a: 2 } )
没有具有复合索引,例如
db.collection.ensureIndex( { _id: 1, a: 1 } )
但是只有一个_id索引(默认情况下会得到)和另一个字段“a”的索引,如
db.collection.ensureIndex( { a: 1 } )
换句话说,我想知道为了对两个字段执行覆盖查询,我需要一个复合索引而不需要两个单一(即非复合)索引,每个字段一个。
答案 0 :(得分:2)
查询仅使用一个index。
您的示例将_id
显示为索引的元素之一? _id
需要在集合中是唯一的,因此制作_id
的复合索引和其他内容是没有意义的。
如果您改为:
db.collection.ensureIndex( { a: 1, b: 1 })
然后,您可以根据需要单独使用a
索引,也可以使用b
作为复合索引。