干货教程 | MongoDB 熟练到精通(四): 文档模型设计三步曲之工况细化篇

干货教程 | MongoDB 熟练到精通(四): 文档模型设计三步曲之工况细化篇

💡 原文中文,约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的关联目标不能是分片表。
➡️

继续阅读