1

您能否对两个字段执行 MongoDB 覆盖查询,例如

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

没有复合索引,例如

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

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

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

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

4

1 回答 1

1

查询只使用一个索引

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

如果你有:

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

然后,您可以a根据需要单独使用该索引,也可以将其用作带有b.

于 2013-01-12T19:39:59.457 回答