a
フィールドと。を持つMongoコレクションがあるとしますb
。このコレクションに、0から1000まで繰り返し増加する{a:'a', b : index }
場所を入力しました。index
私はこれが非常に、非常に間違っていることを知っていますが、理由を説明することはできません(しゃれは意図されていません):
collection.find({i:{$gt:500}}).explain()
インデックスが使用されていないことを確認します(コレクション内の1,000個のドキュメントすべてをスキャンしたことがわかります)。
どういうわけか、Mongoにインデックスの使用を強制することはうまくいくようです:
collection.find({i:{$gt:500}}).hint({a:1,i:1}).explain()
編集
Mongoのドキュメントは、クエリ用語の1つが複合インデックスの最初の用語と一致する場合にのみ複合インデックスを使用することを非常に明確にしています。この場合、ヒントを使用すると{a:1,i:1}
、クエリ用語にが含まれていなくても、Mongoが複合インデックスを使用したように見えますa
。これは本当ですか?