没有使用Mongo索引(简单的一列查询)

时间:2012-03-19 19:26:55

标签: mongodb

解释查询查询:

> db.datasources.find({nid: 19882}).explain();         
{
    "cursor" : "BtreeCursor nid_1",
    "nscanned" : 10161684,
    "nscannedObjects" : 10161684,
    "n" : 10161684,
    "millis" : 8988,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "isMultiKey" : false,
    "indexOnly" : false,
    "indexBounds" : {
        "nid" : [
            [
                19882,
                19882
            ]
        ]
    }
}

以下是该集合的索引:

> db.datasources.getIndexes()  
[
    {
        "name" : "_id_",
        "ns" : "rocdocs_dev.datasources",
        "key" : {
            "_id" : 1
        }
    },
    {
        "_id" : ObjectId("4edcd725c605da5f200000a2"),
        "ns" : "rocdocs_dev.datasources",
        "key" : {
            "nid" : 1
        },
        "name" : "nid_1"
    },
    {
        "v" : 1,
        "key" : {
            "is_indexed" : 1
        },
        "ns" : "rocdocs_dev.datasources",
        "name" : "is_indexed_1"
    }
]

1 个答案:

答案 0 :(得分:2)

这是使用BtreeCursor指出的索引如果不是,则会说BasicCursor

虽然我确实看到查询花了9秒钟并扫描看似整个集合的内容。

插入这些文件后是否添加了此索引?也许还没有建成呢?

我会考虑重建索引

db.datasources.reIndex()