MongoDB计算部分索引项

时间:2017-11-29 19:02:41

标签: mongodb partial-index

我对集合的部分索引看起来像这样:

{ // Fields
    "Name" : 1
}
{ // Options
    "unique" : true,
    "name" : "Name_1",
    "partialFilterExpression" : {
        "IsArchived" : {
            "$eq" : true
        }
    }
}

我只是想计算一下这个部分索引编入索引的项目数,只是为了检查它是否正常工作。有没有办法做到这一点?或者是否有另一种好方法可以检查所有索引由部分索引索引?

1 个答案:

答案 0 :(得分:1)

MongoDB不支持在获取索引文档的详细信息时检查索引的内容。

但是,您可以使用与索引中的过滤器相同的过滤器对集合运行查询,以获取索引文档:

db.collection.find({ "IsArchived": { "$eq": true } })

此外,如果您想获得计数,最后可以添加.count()

db.collection.find({ "IsArchived": { "$eq": true } }).count()

为了查看您的索引是否被使用,您可以运行,例如以下查询:

db.collection.find({ "Name": "index check", "IsArchived": true }).explain()

如果使用索引(应该是这种情况),那么发出上述语句应该在"winningPlan"字段内的某处打印出这样的内容:

"inputStage" : {
    "stage" : "IXSCAN",
    "keyPattern" : {
        "Name" : "index check"
    },
    "indexName" : "<your index name>"

如果打印出类似这样的内容,则索引不会被使用:

    "winningPlan" : {
        "stage" : "COLLSCAN",