【发布时间】:2026-01-23 15:55:01
【问题描述】:
我正在构建一个系统,其中有几个表/集合,这些表之间通过“一个/多”到“一个/多”关系进行交互。
事实是,在我目前的方法中,我在文档之间保留了双重引用。例如:
用户属于 0..* 公司;
公司有 0..* 用户;
如您所见,当建立关系时,它会在两个文档中引用 - User.companies 数组更新,Company.users 数组已更新。
因此,我们会根据关系更新两个集合。看来,这样一来,读取(GET)操作将得到优化,因为不需要连接查询;另一方面,写入操作会更慢,因为每个请求可能会请求更新多个文档。
为此,我创建了一个标准化的 CRUD API 来执行主文档及其所有引用的更新;我正在使用猫鼬事务,所以我可以确保操作要么完全完成,要么完全中止,因此不会出现完整性错误。
最后一个问题 - 这是一个好习惯吗?或者,尽管有其优点和缺点,它是否适用/合理/可扩展?
【问题讨论】:
标签: mongodb mongoose transactions relationship crud