对原始表的MongoDb索引引用

对原始表的MongoDb索引引用,mongodb,indexing,mongodb-query,Mongodb,Indexing,Mongodb Query,我正在测试MongoDB中的索引是如何工作的,一刻也不明白 我有一个包含数据的测试集合(10000行): 我还创建了新索引: collection.createIndex({ SomeValue1: 1, SomeValue2: -1 }) 我不明白索引是如何将自己的条目映射到原始表的 我以为它使用了“_id”列,但这两个查询告诉我这不是真的: #1: #2: At#1查询执行计划显示: "totalKeysExamined": 10000, "totalD

我正在测试MongoDB中的索引是如何工作的,一刻也不明白

我有一个包含数据的测试集合(10000行):

我还创建了新索引:

collection.createIndex({ SomeValue1: 1, SomeValue2: -1 })
我不明白索引是如何将自己的条目映射到原始表的
我以为它使用了“_id”列,但这两个查询告诉我这不是真的:


#1:

#2:


At#1查询执行计划显示:

"totalKeysExamined": 10000,
"totalDocsExamined": 10000,
在#2:

我希望这两个变体都不使用原始表。
在官方文档中找到此信息:


但仍然不知道如果原始表(索引表)不使用“\u id”字段,如何索引条目与原始表中的条目匹配?

底层Wired Tiger存储引擎是一个键值存储。存储文档时,WiredTiger将内部标识符指定为键,文档作为值,并将其存储在类似于B树的结构中


索引也是树,索引字段的键派生值和内部标识符的值用作文档键。

谢谢您的回答!您能告诉我在哪里可以阅读到更多关于mongo内部实现和基础设施的信息吗?WiredTiger的内部构件过去在WiredTiger.com上,但由于MongoDB收购了它们,我不确定在哪里,或者是否还有。
collection
.find()
.sort({ SomeValue1: 1, SomeValue2: -1 })
.projection({ SomeValue1: 1, SomeValue2: 1, _id: 0 })
.explain("allPlansExecution")
"totalKeysExamined": 10000,
"totalDocsExamined": 10000,
"totalKeysExamined": 10000,
"totalDocsExamined": 0,