MongoDB集合结构

时间:2018-11-11 04:23:55

标签: mongodb mongodb-query spring-data-mongodb

我有一个名为User的集合。

用户具有许多可以分组在一起的信息,例如:

{address : {street:"xx", city:"xx"}}
{history: {school:"xx", job: "xx"}}
{..}

所以我想知道最佳实践是什么

1. First way, Using nested fields:

{user: 
  {address : {street:"xx", city:"xx"}}
  {history: {school:"xx", job: "xx"}}
  {..}
}

2. Second way: Just put them all together.

    {user: 
      street:"xx", 
      city:"xx",
      ...
      school:"xx", 
      job: "xx",
      ...
    }

第一种方式显然对人类更具可读性,并且使人类更容易找到相关信息。

像第一种方法一样,对数据进行分组/嵌套的不利之处是什么? 它会使嵌套字段的查询变慢吗?索引问题?有想法吗?

1 个答案:

答案 0 :(得分:1)

如果您将多余的数据存储在用户下方,则可以更快地读取和写入整个用户文档。

如果您在单独的集合下获得了额外的数据,则可以更快地访问/查找该数据(取决于您的索引)。 MongoDB确实启用了indexing fields in arrays

我的建议是尝试列出您的常见数据访问用例,创建带有大量模拟数据的测试数据库,然后使用查询和聚合来测试性能,以推迟使用不同的存储建模选项。