对很少更新的大型 MongoDB 集合建模

Model a large MongoDB collection that rarely updates

上下文:

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

问题:

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

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

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

我建议您查看官方 MongoDB tree structures advices, and especially the solution with parent reference. It will allow you to keep your structure without struggling of the 16MB maximum size, and you can use $graphLookup 聚合阶段以对树子文档执行进一步查询