Mongodb中的explain():"nscanned"和"nscannedObjects"之间的区别

Lui*_*ano 23 mongodb

我无法在Mongodb的explain查询输出中得到"nscanned"和"nscannedObjects"之间的确切区别.

关于MongoDB Explain文档,我可以阅读:

nscanned检查的项目数(文档或索引条目).项可能是对象或索引键.如果涉及"覆盖索引",则nscanned可能高于nscannedObjects.

nscannedObjects扫描的文档数.

这两个领域有什么不同?更具体的是,当我有一个使用BtreeCursor(一个索引)的查询时,究竟意味着什么,这两个字段有两个不同的值,例如:

{
    "cursor" : "BtreeCursor a_1_b_1",
    "isMultiKey" : false,
    "n" : 5,
    "nscannedObjects" : 5,
    "nscanned" : 9, 
    (...)
}
Run Code Online (Sandbox Code Playgroud)

我知道什么是" 覆盖索引".我想准确理解查询在上面的例子中做了什么.它是否通过("扫描")9个元素(nscanned = 9),其中所有元素都是索引条目并读取("检查")它们中只有5个(nscannedObjects = 5)的值来生成结果集?

Aja*_*rge 25

这意味着:
查询返回了5个文档 - n
从索引中扫描了9个文档 - nscanned
然后从集合中读取了5个完整文档 -nscannedObjects

类似的例子见:http:
//docs.mongodb.org/manual/reference/method/cursor.explain/#cursor.explain