我们有一个包含两个字段(A和B)的集合,它们都有一个索引。
使它们之间的区别非常快。但是实际的查询在A中与其他字段B中的过滤器不同。
db.getCollection('Collection').distinct( "A" , { "B" : "b1" } )
这确实非常慢,因为它正在扫描集合(不幸的是b1的过滤率不超过50%)。有没有办法使MongoDB更快呢?
答案 0 :(得分:1)
根据此JIRA ticket,您可以做的就是创建一个这样的复合索引:
db.collection.createIndex({ "B": 1, "A:" 1 })
答案 1 :(得分:0)
我建议您使用复合索引来解决此问题。由于优先级在compound index中基于您的查询非常重要,因此建议您使用此索引{A:1,B:1}