使用错误索引的MongoDB查询

时间:2019-03-20 20:45:33

标签: mongodb mongodb-query

我有一个集合,其模式类似于:

{
    _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
}

我的查询似乎总是使用第二个索引而不是第一个索引,即使第二个结果在包括排序在内的多个阶段中也是如此。我一生无法弄清楚为什么它使用了错误的索引,我们将不胜感激。

由于最大字符数限制,我已粘贴bind的解释输出:https://pastebin.com/LcC3nYCg

[编辑]:上传了正确的说明消息。

0 个答案:

没有答案