嵌入文档上的 mongodb 索引

Posted

技术标签:

【中文标题】嵌入文档上的 mongodb 索引【英文标题】:mongo db indexes on embedded documents 【发布时间】:2012-09-03 15:21:39 【问题描述】:

我有一个域对象模型如下...

@document
Profile

     **social profile list:**
      SocialProfile
           
          **Interest list:**
          
           Interest
            
                 id
                 type
                 value
            
            ...
       
       ...

每个个人资料可以有很多社交个人资料,在每个社交个人资料中,通过特定的社交个人资料有很多与个人资料相关的兴趣(社交个人资料代表 Facebook 等社交网络),每个兴趣也是嵌入文档,字段为 id , type , 值。

所以我有两个问题.. 我可以在嵌入文档的兴趣中单独索引几个字段吗? 我可以在嵌入的文档兴趣中创建复合索引吗?

我猜我的模型中的复杂性是嵌入文档的深层级别是 2.. 并且该文档的路径是通过数组...

可以通过元数据注释以弹簧方式完成吗?如果您认为我的模型有误,请告诉我我是 mongo 的新手 谢谢

【问题讨论】:

【参考方案1】:

您可以单独索引嵌入文档中的字段。

您也可以在字段上创建复合索引,只要不超过一个字段是一个数组。

这些可能会提供更多答案:

http://www.mongodb.org/display/DOCS/Indexes#Indexes-CompoundKeys

http://www.mongodb.org/display/DOCS/Multikeys

【讨论】:

当我在嵌入类型上单独索引时,Spring 正在为嵌入类型(未使用@Document 注释)创建一个集合并在其中设置索引。这不是大多数人所期望的行为。嵌入文档(“fieldOutter.fieldInner”)上的复合键可能是解决方案,直到它们修复 spring-data-mongodb。

以上是关于嵌入文档上的 mongodb 索引的主要内容,如果未能解决你的问题,请参考以下文章

子文档键上的 MongoDB 索引

子文档键上的 MongoDB 索引

如何跳过重复索引上的错误并继续在 MongoDB 中进一步添加文档(pymongo)

MongoDB索引

MongoDB嵌入Java

MongoDB关系与数据库引用