mongodb - 为很少更新的大型 MongoDB 集合建模
问题描述
语境:
我目前正在建模遵循由 4 层组成的深层树模式的数据(类别、子类别、子子类别、子子子类别......最后两个当然不是我将使用的真实单词)这个集合旨在扩大随着时间的推移越来越大,每一层将包含几十个元素的列表。
问题:
像这样对一个完整的嵌入式集合进行建模会引发一个大问题;MongoDB 的 16MB 文档限制在这种情况下并不理想,因为文档大小会慢慢接近限制。
但与此同时,这些数据并不意味着经常更新(最多一天几次)。在客户端,API 需要返回一个完整构建的大 JSON 文件,该文件由嵌套在一起的所有这些层组成。它可以很容易地以这样一种方式进行,即每次更新层时,完整的 JSON 结果也会更新并存储在 RAM 中,准备发送。
我想知道在不同的集合中拆分这样的 4 层树是否是一个更好的主意,因为同时它会引发更多的查询,但它会更具可扩展性和易于理解。但我真的不知道这是否是对 MongoDB 文档进行建模的方式。我可能做错了什么(第一次使用 MongoDB),我想确保一切都已经以这种方式做事
解决方案
我建议您查看官方MongoDB 树结构建议,尤其是带有父参考的解决方案。它将允许您保持您的结构而无需为 16MB 的最大大小而苦苦挣扎,并且您可以使用$graphLookup聚合阶段对树子文档执行进一步的查询
推荐阅读
- javascript - 正则表达式超过 10 个数字
- javascript - 如何使用 javascript 创建 HTML 文件
- java - BOX API - 让外部用户选择他们的文件,然后像 Dropbox 选择器一样以编程方式下载选定的文件
- jquery - jquery API 数据未正确更新 - 1 数字低
- java - 什么是 d:c,它在这个程序中做了什么,还有其他方法可以做到这一点吗?
- intellij-idea - IDEA - 取消静音一个断点
- excel - 数据验证列表从 VBA 运行宏
- c# - 双引号消息的 Bot Framework 错误网关
- git - 如何为版本控制的 git commit 命令配置选项
- scala - Play Framework Scala 中的 SOAP API