Запрос MongoDB с использованием неверного индекса - PullRequest
0 голосов
/ 20 марта 2019

У меня есть коллекция со схемой, похожей на:

{
    _id: ObjectId,
    DatasetID: UUID,
    ID: UUID,
    Model.Footprint: GeoJSONType
    LastUpdateTimeMs: long
}

Я выдаю запрос, который выглядит следующим образом:

db.getCollection('redacted').find(
{
    "DatasetID":UUID("redacted"),
    "Model.Footprint" : {
            $geoIntersects : {
                $geometry : {
                    type: "Polygon", 
                    coordinates: redacted
                }
            }
        },   
        "LastUpdateTimeMs" : { $gte: 1 }, 
        "_id": { $gt: ObjectId("redacted")},
})
.sort({ "_id": 1})
.limit(100)

И у меня есть два следующих индекса:

{
    "DatasetID" : 1,
    "_id" : 1,
    "LastUpdateTimeMs" : 1,
    "Model.Footprint" : "2dsphere"
}

{
    "DatasetID" : 1,
    "ID" : 1
}

Мой запрос, похоже, всегда использует второй индекс, а не первый, хотя второй результат состоит из нескольких этапов, включая сортировку. Я не могу понять, почему он использует неправильный индекс, и любая помощь будет признательна.

Я вставил вывод объяснения из-за максимального ограничения символов: https://pastebin.com/LcC3nYCg

[Изменить]: загружено правильное сообщение объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...