我有一个名为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",
...
}
第一种方式显然对人类更具可读性,并且使人类更容易找到相关信息。
像第一种方法一样,对数据进行分组/嵌套的不利之处是什么? 它会使嵌套字段的查询变慢吗?索引问题?有想法吗?
答案 0 :(得分:1)
如果您将多余的数据存储在用户下方,则可以更快地读取和写入整个用户文档。
如果您在单独的集合下获得了额外的数据,则可以更快地访问/查找该数据(取决于您的索引)。 MongoDB确实启用了indexing fields in arrays
我的建议是尝试列出您的常见数据访问用例,创建带有大量模拟数据的测试数据库,然后使用查询和聚合来测试性能,以推迟使用不同的存储建模选项。