在mongo,你能重建一个单独的索引吗?

In mongo, can you rebuild one single index?

在mongo中,你可以用

重建所有索引
db.collection.reIndex()

但是有没有办法重建单个索引?

谢谢, 凯文

The db.collection.reIndex() drops all indexes on a collection and recreates them. This operation may be expensive for collections that have a large amount of data and/or a large number of indexes.

这是一个非常昂贵的操作,并且会在持续时间内阻止对集合的所有操作。

Use dropIndex to remove one Index and createIndex to create it back as rebuildIndex is not supported for only one index

从 5.0 开始,reIndex 将仅限于独立实例。

通过以下方式识别所有索引:

db.collection.getIndexes();

找到您要重建的那个,例如:

    {
        "v" : 2,
        "key" : {
            "fld1" : 1,
            "fld2" : -1
        },
        "name" : "fld1_1_fld2_-1"
    }

“安全地”删除并使用显式规范而不是名称重建:

var idx={fld1:1,fld2:-1};db.collection.dropIndex(idx);db.collection.createIndex(idx);