При съставни индекси, където едно от индексираните полета е масив, MongoDB ще използва само долна или горна граница за заявката за диапазон, за да гарантира, че са върнати правилни съвпадения. Вижте SERVER-958 за пример, при който ограничаването както на горната, така и на долната граница на индекса няма да намери очаквания документ.
Ако вашата заявка за диапазон е в полето за масив, потенциално можете да използвате $elemMatch
оператор, за да оптимизирате вашата заявка в рамките на очакваните граници на индекса. Както при MongoDB 2.4, $elemMatch
операторът не работи върху полета без масив, така че за съжаление това не помага при вашия случай на употреба. Можете да гледате/да гласувате за SERVER-6050:Помислете за разрешаване на $elemMatch, приложен към не масиви
в програмата за проследяване на проблеми MongoDB.
Има също открит проблем SERVER-7959:Потенциално неочаквани сканирания със съставни индекси, когато някои полета са многоключови описващ това поведение.