2016-05-02 21 views

答えて

1

のキーの順番はです。MongoDBは照会されたすべてのプロパティーを調べ、適切なインデックスを見つけるのに十分です。

ただし、インデックスで定義されているキーの順序は問題ありません。複合インデックスは、インデックスドキュメントで定義されている順序でmatch queries against any prefix of its keysに使用できます。したがって、上記のインデックスを使用して{propA: 'x', propB: 'y'}のようなクエリには回答できますが、{propB: 'y', propC: 'z'}のようなクエリには答えられません。

explain()を使用して、特定のクエリに使用するインデックスMongoDBを特定できます。

0

アビシュの答えに追加するには、複数のフィールドで構成されるこのようなインデックスを複合インデックスといいます。複合インデックスにリストされているフィールドの順序は非常に重要です。理由は次のとおりです。

インデックスには、最初のフィールドの値によって最初にソートされたドキュメントへの参照が含まれ、最初のフィールドの各値内で、2番目のフィールドの値によってソートされ、2番目のフィールドの各値3番目のフィールドの値でソートされます。

例えば、あなたの場合、インデックスはpropAフィールドの値によって最初にソートされたドキュメントへの参照を含み、propAフィールドの各値内ではpropBフィールドの値によってソートされ、propBの各値フィールドは、propCフィールドの値でソートされます。

したがって、次ながらクエリが指定されたインデックスを使用することに注意してください。db.collection.find({propB

  • :({ 'Z' がpropa}):

    • db.collection.findを'X'、propC: 'Z'})
    • db.collection.find({propB: 'X' がpropa:がpropa 'Y' 'Z'})

    以下缶」指定されたインデックスを使用してください:

    • db.collection.find({propB: 'X'})
    • db.collection.find({propC: 'Y'})
    • db.collection.find({propB: 'X'、 propC: 'y'})
  • 関連する問題