「x」列にインデックスを持つmongo dbにコレクションがあります。次のクエリは正常に機能します。
db.col.find({'$or': [{'x': '1'}, {'x': '2'}]})
Explain() メソッドは、mongo db が「x」のインデックスを使用していることを確認します。上記のステートメントに別の演算子 ($or または $and) を追加すると、何らかの形でクエリが破損します。オペランドが 1 つだけの単純な $and (mongo がそれを完全に無視すると予想していた) は、mongo がインデックスを使用しないようにします。
db.col.find({"$and": [{'$or': [{'x': '1'}, {'x': '2'}]}]})
expin() の結果は、mongo がすべてのドキュメントをスキャンし、インデックスを使用していないことを示しています。