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