Я использую версию MongoDB 4.2.0
. У меня есть коллекция со следующими индексами:
{uuid: 1},
{unique: true, name: "uuid_idx"}
и
{field1: 1, field2: 1, _id: 1},
{unique: true, name: "compound_idx"}
При выполнении этого запроса
aggregate([
{"$match": {"uuid": <uuid_value>}}
])
планировщик правильно выбирает uuid_idx
.
При добавлении этого условия сортировки
aggregate([
{"$match": {"uuid": <uuid_value>}},
{"$sort": {"field1": 1, "field2": 1, "_id": 1}}
])
планировщик выбирает compound_idx
, что замедляет запрос.
Я ожидаю, что предложение сортировки не будет иметь значения в этот контекст. Почему Mon go не использует индекс uuid_idx
в обоих случаях ?
EDIT : Небольшое уточнение, я понимаю, что есть обходные пути для использования правильного Индекс, но я ищу объяснение, почему это не происходит автоматически (если возможно, со ссылками на официальную документацию). Спасибо!