Mongodb 索引是否使用指针?

Mongodb 索引是否使用指针?,mongodb,Mongodb,mongodb索引如何存储在RAM中?例如,如果存在以下文档: {水果:'apple',标签:['hello','world','rainbow']} {水果:“香蕉”,标签:[“你好”,“世界”,“独角兽”]} {水果:'orange',标签:['hello','world','lion']} 在标记字段上具有索引。'hello'和'world'标记是否存储在单个内存位置,然后指针在索引中引用它们?或者是否为每个标记实例化了一个新的字符串?: 为了索引包含数组值的字段,MongoDB为数组中的

mongodb索引如何存储在RAM中?例如,如果存在以下文档:

{水果:'apple',标签:['hello','world','rainbow']}

{水果:“香蕉”,标签:[“你好”,“世界”,“独角兽”]}

{水果:'orange',标签:['hello','world','lion']}

标记
字段上具有索引。
'hello'
'world'
标记是否存储在单个内存位置,然后指针在索引中引用它们?或者是否为每个标记实例化了一个新的
字符串?

为了索引包含数组值的字段,MongoDB为数组中的每个项添加索引项


因此,为每个数组元素创建单独的条目。

是的,但它引用内存中的单个值吗?如果不是,那将是一个严重的优化疏忽。我恐怕无法回答这个问题,因为我不熟悉内部实施细节。我相信MongoDB的智能工程师:)这是一种相当不真实的索引格式,但是,我认为索引中的每个文档实际上都是其自身的一个内存地址,文档的内容不规则地存储在该地址中,因此,它会在重复的地址之间复制字符串值,但我忘了添加标记字段在本例中被索引,我们假设覆盖的查询是在该集合上执行的唯一查询。尽管将此应用于内存中加载的整个文档以用于未覆盖的查询会很好。但这仍然是一种糟糕的表示方式,想想索引更像是带有文档指针的值桶,数组中的每个值都将单独索引,如下所述。这稍微改变了视角。然而,它也改变了我对这个主题的看法,因为文档指针是重复的部分,我相信它使用“指针”而不是重复的内存地址