-
Type: Bug
-
Resolution: Duplicate
-
Priority: Major - P3
-
None
-
Affects Version/s: 4.0.9, 4.0.10
-
Component/s: Index Maintenance
-
Environment:ubuntu 16.04
-
ALL
-
В документах коллекции есть поле contracts, которое хранит массив объектов, в объекте есть строковое поле signedDate с значениями такого вида "2016-09-23T18:02:00+02:02". Это поле проиндексировано. Запросы с count и $lt (аналогично $gt) используют индекс, stage COUNT_SCAN. Но запрос с одновременнно $gt и $lt использует индекс только с одной стороны, а другую фильтрует на FETCH стадии, из-за чего очень страдает скорость запроса (неприемлимо долго).
Почему индекс не использует одновременно две границы?
Была версия, что проблема в строке, её значение перенес в новое поле того же массива, в формате ISODate, создал индекс - но работает все точно так же. Отдельно отмечу, что не во всех документах есть массив contracts, хотя в большой части.
- duplicates
-
SERVER-41594 Covered query don't use index for range $gt+$lt. Only for one side and FETCH filter for another
- Closed