我正在尝试为我们正在开发的应用程序设计一个粗略的设计。我想知道的是,如果有办法直接映射mongo中的一对多关系。
我的架构是这样的:
我正在阅读MongoDB文档,其中提到了与嵌入式文档和多个集合相关的内容。我刚开始使用Mongo和meteor时,我并没有详细说明这一点。
问题是,看似更好的方法是什么?拥有多个小型集合或拥有一个大型嵌入式集合。我知道这个问题有点主观,我只需要在这个领域拥有更多专业知识的人们清楚一点。
另一个问题是,假设我使用嵌入式模型,是否有办法仅更新文档的一部分(仅针对接口),以便在添加itf时,可以将其插入到同一个文档中设备文件?
答案 0 :(得分:2)
这取决于申请的目的。
大文件
如果您不打算(通常)修改数据但是您将要查询它们,那么您想要一个大型嵌入式集合的好例子就是这样。在我的应用程序中,我使用它来存储包含所有信息的预处理行程。因此,当有人想要查阅此行程时,所有信息都位于单个文档中。但是,如果您的查询基于行程中嵌入的值,则在列表中这将非常慢。如果是这种情况,我建议使用两个集合之间的关系创建另一个集合。另外,为了更新文档的一部分,它会很慢,因为它需要你获取整个文档然后更新它。
有关系的小型文件
如果您计划大量修改数据,我建议您坚持引用另一个集合。使用小文档,这将允许您更快地更新任何集合。如果要建模唯一关系,可以考虑在mongo中使用唯一索引。这可以使用:db.members.createIndex( { "user_id": 1 }, { unique: true } )
完成。
因此: