首页 > 解决方案 > 为很少更新的大型 MongoDB 集合建模

问题描述

语境:

我目前正在建模遵循由 4 层组成的深层树模式的数据(类别、子类别、子子类别、子子子类别......最后两个当然不是我将使用的真实单词)这个集合旨在扩大随着时间的推移越来越大,每一层将包含几十个元素的列表。

问题:

像这样对一个完整的嵌入式集合进行建模会引发一个大问题;MongoDB 的 16MB 文档限制在这种情况下并不理想,因为文档大小会慢慢接近限制。

但与此同时,这些数据并不意味着经常更新(最多一天几次)。在客户端,API 需要返回一个完整构建的大 JSON 文件,该文件由嵌套在一起的所有这些层组成。它可以很容易地以这样一种方式进行,即每次更新层时,完整的 JSON 结果也会更新并存储在 RAM 中,准备发送。

我想知道在不同的集合中拆分这样的 4 层树是否是一个更好的主意,因为同时它会引发更多的查询,但它会更具可扩展性和易于理解。但我真的不知道这是否是对 MongoDB 文档进行建模的方式。我可能做错了什么(第一次使用 MongoDB),我想确保一切都已经以这种方式做事

标签: mongodbdatabase-design

解决方案


我建议您查看官方MongoDB 树结构建议,尤其是带有父参考的解决方案。它将允许您保持您的结构而无需为 16MB 的最大大小而苦苦挣扎,并且您可以使用$graphLookup聚合阶段对树子文档执行进一步的查询


推荐阅读