У меня есть коллекция со схемой, похожей на:
{
_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
[Изменить]: загружено правильное сообщение объяснения.