Mongodb system.profile.nsCaned是否显示错误的值?
当我执行Mongodb system.profile.nsCaned是否显示错误的值?,mongodb,Mongodb,当我执行db.system.profile.find(…)query时,mongodb显示了错误的nscanned值(不是它使用的索引) 例如,如果我正在进行一些查询db.c.find(q).解释get { "cursor" : "index multi", "isMultiKey" : false, "n" : 23, "nscannedObjects" : 23, "nscanned" : 5133, "nscannedObjectsAllPlans" : 41
db.system.profile.find(…)
query时,mongodb显示了错误的nscanned值(不是它使用的索引)
例如,如果我正在进行一些查询db.c.find(q).解释get
{
"cursor" : "index multi",
"isMultiKey" : false,
"n" : 23, "nscannedObjects" : 23,
"nscanned" : 5133,
"nscannedObjectsAllPlans" : 41042,
"nscannedAllPlans" : 51297,
}
db.system.profile.find()为我返回“nscaned”:51297,
。所以我看到它返回nscannellplans。是这样吗?我能以某种方式看到(过去)执行的真正的nscanned慢查询吗
真的,我只是想知道它在执行查询时是否使用了正确的索引。是的,扫描了所有索引计划,它肯定会更高,而且nscaned是5133而不是51297,也就是扫描了所有计划扫描您包括实际的查询以及MongoDB服务器版本吗?nscanned
值很可能高于预期值,因为查询无法有效地使用索引(例如,如果使用不区分大小写的索引)。如果您缺少nscannedObjects
值(该值将显示查询需要扫描的文档数量),那么获得完整的解释输出也会很有帮助。很抱歉,“nscannedObjects”的格式不好:23,在explain中,它显示它有效地使用了索引……在db.system.profile中,它显示它不存在,并且查询看起来像“time”:{“$gte”:ISODate(“2014-07-24T08:58:12Z”),“$lt”:ISODate(“2014-07-25T04:58:12Z”),“someId”:ObjectId(“5213cd2dd19ae17004ae6”),“someText”:/^a/