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