1

MongoDB の OR クエリのドキュメントを読む OR の構文は次のとおりです。

Syntax: { $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] } 

私が理解できなかったのは、これらの式が実行される順序です。すなわち

式 1 に一致するドキュメントを取得する 何も見つからない場合、式 2 に一致するドキュメントを取得する ect ... 式が次々に実行されるというのは本当ですか?

それはどういう意味ですか: 「$or クエリでインデックスを使用する場合は、$or クエリの各句が並行して実行されることに注意してください。」

4

1 に答える 1

1

クエリの実行に特定の順序はありません。

db.col.find({ name: 's', c: 1 });

または:

db.col.find({$or: [{name: 's'}, {c: 1}]})

MongoDBでは、$orにある条件の数に基づいて x クエリを効果的に作成し、$or各句の結果を返し、重複をマージしてから結果を返します (簡単に言えば)。この動作により、MongoDB は実際には$or句に複数のインデックスを使用できますが、現時点では句のみを使用できます$or

これは、複合インデックスを作成する際に注意することが重要です。インデックスは、最適なペースで機能するために、クエリに特定の構造を必要とする場合があります。そのため、次の複合インデックスがある場合:

{name: 1, c: 1}

次の両方の句に一致しない場合があります。

 db.col.find({$or: [{name: 's'}, {c: 1}]})

パフォーマンス的に。$orしたがって、これは、節の並列性に関してここで頭に入れておく必要があることです。すべての句がインデックスを使用していることを確認したい場合はexplain()、最後に を使用できます。これにより、句とその使用法が分解されます。

于 2012-12-28T12:07:04.520 に答える