我在mongo db中有一个集合,索引在“x”列上。以下查询工作正常。
db.col.find({'$or': [{'x': '1'}, {'x': '2'}]})
explain()方法确认mongo db使用“x”上的索引。在上述语句中添加另一个运算符(无论是$还是$和)会以某种方式破坏查询。一个简单的$和只有一个操作数(我希望mongo完全忽略它)使得mongo不使用索引:
db.col.find({"$and": [{'$or': [{'x': '1'}, {'x': '2'}]}]})
expain()结果表明mongo扫描所有文档而不再使用索引。