mongodb:使用嵌套文档或带有引用的单独集合

mongodb:使用嵌套文档或带有引用的单独集合,mongodb,nosql,Mongodb,Nosql,我只是从mongoDB开始 我必须存储用户数据。对于每个用户,每天都会添加一个小数据记录(不超过500字节),或者更新其中的一些记录(大部分时间不超过10个) 现在我的问题是,我应该将其建模为每个用户文档中嵌入数据记录的用户集合,还是拥有一个用户集合和一个从每个数据文档到用户文档的引用的数据记录集合?这主要取决于您将在DB上执行的查询 我假设您需要在数据库中存储特定于用户的数据(名称、地址、ecc)和“其他”数据(您的“小数据记录”) 如果查询将获得特定于用户的数据以及“其他”数据,那么最好只使

我只是从mongoDB开始

我必须存储用户数据。对于每个用户,每天都会添加一个小数据记录(不超过500字节),或者更新其中的一些记录(大部分时间不超过10个)


现在我的问题是,我应该将其建模为每个用户文档中嵌入数据记录的用户集合,还是拥有一个用户集合和一个从每个数据文档到用户文档的引用的数据记录集合?

这主要取决于您将在DB上执行的查询

我假设您需要在数据库中存储特定于用户的数据(名称、地址、ecc)和“其他”数据(您的“小数据记录”)

如果查询将获得特定于用户的数据以及“其他”数据,那么最好只使用用户集合,并将“其他”数据嵌入到用户集合中。通过这种方式,您可以在一个查询中获得特定于用户的数据和“其他”数据

如果查询只获取“其他”数据(例如从用户id开始),并且您计划永远不需要特定于用户的数据和“其他”数据,那么您可以使用数据收集,在其中存储“其他”数据和用户id(例如,更新数据)


请记住,通常不建议在mongodb中使用引用,除非您有很好的理由这样做,所以我选择第一个解决方案,它完全取决于用例,如数据的性质、读取频率、数据访问模式等


在您的情况下,“小数据记录”似乎依赖于用户数据,而不是真正的独立数据。由于大小也很小,最好将数据嵌入到用户集合中

所以向子文档添加新记录不是问题吗?我每次都必须加载整个文档吗?是的,您可以更新并向子文档中添加数据,并且不需要为此加载整个文档。非常感谢。我还想把所有记录和用户数据放在一起。不客气。请记住,在对集合建模之前,在mongo中了解如何查询数据非常有用。因此,请尝试了解如何处理数据:尝试使用iPotetic集合结构进行一些测试查询,然后找到将数据存储在集合中的最佳方法