Mongodb 多个复合索引 - 相同的键?

Mongodb multiple compound indices - same keys?

考虑以下复合指数:

{name: 1, occupation: 1, time: 1}

{name: 1, time: 1}

假设您有两种类型的查询:

{name: 'john', occupation: 'engineer'}

{name: 'allan', time: {$lt: 3}}

第二类查询可以使用第一个索引吗? 请注意,它没有指定职业。

它和使用第二个索引一样有效吗?

Will the second type of query be able to use the first index? Note that it does not specify an occupation.

是的。

然而,与 {name: 1, time: 1}.

相比,它会相对低效(取决于你有多少职业,以及你有多少相同的名字)

任何一个索引都应该没问题,因为 name 应该很有选择性。

查看 db.collection.explain() and the resulting explain results 以检查查询计划以及您的查询使用的索引。

请注意,如果您的 collection 非常小,则任一索引都可以。要进行更逼真的模拟,请使用 mgeneratejs 之类的东西插入随机数据,这些数据可以生成例如100 万个示例文档。