1

以前の質問で、MongoDBがステートメントごとに複数のクエリを実行し$or、重複が後処理で破棄されることがわかりました。$andクエリはどのように実装されますか?

最初のステートメントがFALSEの場合、ドキュメントが破棄されるという、ある種の最適化はありますか?

4

1 に答える 1

2

$ andステートメントは、$orステートメントとは大幅に異なります。$ andは定義上制限があるため、$ and式の任意の単一句を単一のクエリとして使用して、さらに評価するためにドキュメントをフェッチできます。MongoDBは、利用可能なインデックスを調べて最適化し、実行するクエリを選択します。次に、各結果が残りの句のANDに対して評価されます。ご想像のとおり、これは$orステートメントよりもはるかに簡単です。

于 2012-05-21T18:17:21.560 に答える