2017-09-28 4 views
1

私は2つのクエリをサポートしたい複合インデックスモンゴブ化合物インデックス - _idソートにも組み込まれていますか?

{ userID:1, connectionStatus: 1, userTargetLastName: 1}) 

を持っている:私は第二の化合物の指標は、_idでソートする必要があるかどうか混乱しています

UserConnection.find({ $and : [ { userID : req.decoded.id }, { connectionStatus : 'accepted' } ] }) 
       .sort({'_id': -1}).exec() 

UserConnection.find({ $and : [ { userID : req.decoded.id }, { connectionStatus : 'accepted' } ] }) 
       .sort({'userTargetLastName': 1}).exec() 

をそれが私の複合インデックスに組み込まれているかどうか? (mongodbドキュメントごとに、私の複合インデックスはuserID:1、connectionStatus:1のクエリもサポートする必要があります(ただし、どのような順序で並べ替えることができますか?_id?)。だから、_idまたは作成された別の複合インデックスを追加する必要があります?

{ userID:1, connectionStatus: 1, created: -1}) 

答えて

1

あなただけuserIDconnectionStatusに照会されているので、あなたの複合インデックスは、ソートがクエリの結果に行われます。userTargetLastNameを含む必要はせず、そのソートにインデックスを持つことが必須ではありませんしたがって、インデックスに_idを含めることは重要ではありません。

インデックスの使用を確認する最も良い方法は、explain()関数をあなたの質問。これは、どのインデックスが使用されているか、それがどれほど効率的であるか(スキャンされたドキュメントの数など)について多くのことを教えてくれます。

+0

ありがとうございます、私は私のクエリを10に制限したいと言わなければならないはずです。特定のconnectionStatusでuserIDの結果を200とすることができます。 userTargetLastNameまたは_id(または作成済み)のいずれかでソートされた10が必要です。 – user753416

+0

また、 "explain()"のおかげで - 私は今、私が望むように物事が働いているかどうかをチェックするために使用します – user753416

関連する問題