查询如下所示:
db.myCollection.find({_id: {$in: [...]}, isActive: true})
_id
是常规ObjectId
,isActive
是分配给每个文档的bool。
使用像{_id: 1, isActive: 1}
这样的索引有什么性能优势吗?一方面,_id
是一个唯一的字段,已经编入索引,因此任何额外的索引都是多余的。另一方面,Mongo可能会通过仅检查索引来抛出不匹配的文档(即isActive = false
),但可能会有轻微的收获。
答案 0 :(得分:2)
我认为使用复合索引是个好主意。但是,由于isActive字段只能有两个值,因此更好的索引是
{isActive: 1, _id: 1}
这将确保在下一步中只处理那些处于活动状态的对象。