💡
原文中文,约4900字,阅读约需12分钟。
📝
内容提要
MongoDB文档模型设计的第二步是根据读写工况细化,当内嵌文档太大或者元素会频繁修改时,可以考虑使用引用方式,把数据放到另外一张表中,以提高查询效率。MongoDB使用聚合框架的$lookup来模仿关联查询,但只支持left outer join,不支持inner join、non-equality join等关联方式,而且$lookup的关联目标不能是分片表。
🎯
关键要点
- MongoDB文档模型设计的第二步是根据读写工况细化。
- 当内嵌文档太大或元素频繁修改时,可以考虑使用引用方式。
- 需要了解数据的使用方式、查询模式、写入模式和数据量等信息。
- 通过技术需求对文档模型进行优化,常用手段包括适当使用引用和冗余。
- 在企业联系人管理应用中,分组信息频繁变动,建议将其放入单独的集合。
- MongoDB支持$lookup操作来实现类似于关系型数据库的关联查询。
- 使用$lookup时需要提供from、localField、foreignField和as等参数。
- 头像数据应放入单独集合以提高查询效率,避免内存占用。
- 使用引用方式的规则包括内嵌文档太大、频繁修改或数组元素持续增长。
- 引用设计存在限制,如缺乏主外键检查和$lookup的关联限制。
- MongoDB的$lookup只支持left outer join,不支持inner join和non-equality join。
- $lookup的关联目标不能是分片表。
➡️