mongodb:多键索引结构?

Ari*_*N3o 15 indexing mongodb mongodb-indexes

我发现很难理解在mongodb中如何在多键上完成索引编制.

这是我在其网站上读到的关于mongodb文档中的多键的内容:
1)"在数组元素索引上创建索引导致数据库索引数组的每个元素"
2)"...将索引文档上的所有标记,并为该文档创建"X","Y"和"Z"的索引条目."

那么该文档的索引条目究竟意味着什么呢?每个文档是否记住条目,在这种情况下,搜索将是一个全表扫描?或者它是与mysql相同的b-tree索引,其中每个索引条目将指向每个相应事件的多个文档,在这种情况下,我过度思考.

我们来举个例子:
obj1 = {
name: "Apollo",
text: "Some text about Apollo moon landings",
tags: [ "moon", "apollo", "spaceflight", "nasa" ]
}

obj2 = {
name: "Atlantis",
text: "Some text about Atlantis flight missions",
tags: [ "space", "atlantis", "spaceflight", "nasa" ]
}

>db.articles.ensureIndex( { tags : 1 } )

请帮我理解!提前致谢.

Thi*_*ilo 21

在这种情况下,您的索引(它是一个B树)将如下所示:

 apollo => [ obj1 ]
 atlantis => [ obj2 ]
 moon => [ obj1 ]
 nasa  => [ obj1, obj2 ]
 space => [ obj2 ]
 spaceflight => [ obj1, obj2 ]
Run Code Online (Sandbox Code Playgroud)

这只是一个"常规"B树索引,除了每个文档可以出现多次(每个唯一标记值出现一次).