MongoDb:嵌入与引用

MongoDb:嵌入与引用,mongodb,schema,Mongodb,Schema,我有以下收藏: 客户端包含产品包含项目包含任务和 公司包含子公司包含部门包含用户,用户包含自定义属性 最佳做法是什么?如何更有效地使用mongodb 对我来说,用户和项目将更频繁地被更改,并且应该被定义为单独的集合 您的建议是什么?对于您的问题没有统一的答案,因为MongoDB允许您同时进行嵌入和引用。 但这里有一些提示:不要膨胀集合,因为查询下面深层的元素可能很困难,特别是如果要使用列表的话 如果您能够创建原型,那么首先尝试嵌入集合,然后编写一个单元测试,该测试将添加/删除/查询项目和用户。如

我有以下收藏:

客户端包含产品包含项目包含任务和 公司包含子公司包含部门包含用户,用户包含自定义属性 最佳做法是什么?如何更有效地使用mongodb

对我来说,用户和项目将更频繁地被更改,并且应该被定义为单独的集合


您的建议是什么?

对于您的问题没有统一的答案,因为MongoDB允许您同时进行嵌入和引用。 但这里有一些提示:不要膨胀集合,因为查询下面深层的元素可能很困难,特别是如果要使用列表的话


如果您能够创建原型,那么首先尝试嵌入集合,然后编写一个单元测试,该测试将添加/删除/查询项目和用户。如果这样做有效,那么就没有必要引用它们

指数呢?我可以在db.Company.enshureIndex'subsidiant.department.user.name.lastname'上建立索引吗?当然可以,为什么不呢?看看速度如何?什么会更快?单独收集和链接与大型文档?这就是“它取决于”的起点。MongoDB是面向文档的,因此它意味着无论文档大小如何,都能快速处理文档。只要使用索引,不同方法的性能就不会有任何差异。尽管如此,如果您横向扩展(即在不同的主机上保留集合),这些可能是关键因素。