MongoDB:包含“_id”的复合索引有什么优势吗?

MongoDB: Is there any advantage to a compound index that includes '_id'?

查询如下所示:

db.myCollection.find({_id: {$in: [...]}, isActive: true})

_id 是常规的 ObjectIdisActive 是分配给每个文档的布尔值。

使用像 {_id: 1, isActive: 1} 这样的索引是否有任何性能优势?一方面,_id 是一个唯一字段并且已经编入索引,因此任何额外的索引都是多余的。另一方面,Mongo 能够通过仅检查索引来抛出不匹配的文档(即 isActive = false),这可能会有好处,无论多么轻微。

我认为使用复合索引是个好主意。但是,由于 isActive 字段只能有两个值,更好的索引是

{isActive: 1, _id: 1}

这将确保在下一步中只处理那些处于活动状态的对象。