我对集合的部分索引看起来像这样:
{ // Fields
"Name" : 1
}
{ // Options
"unique" : true,
"name" : "Name_1",
"partialFilterExpression" : {
"IsArchived" : {
"$eq" : true
}
}
}
我只是想计算一下这个部分索引编入索引的项目数,只是为了检查它是否正常工作。有没有办法做到这一点?或者是否有另一种好方法可以检查所有索引由部分索引索引?
答案 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",