【问题标题】:Best way to organize subdocuments in Mongo?在 Mongodb 中组织子文档的最佳方法?
【发布时间】:2015-02-01 19:54:08
【问题描述】:

我正在处理一个项目,该项目需要我将大量对象存储在链接到父对象的数组中,类似于将社交媒体 cmets 存储到其原始帖子。对我来说,为子文档/cmets 数组组织数据的最佳方式是什么?

将子对象放在不同的集合下并引用其父对象是否被认为是最佳做法,还是直接将它们全部放在父对象中更理想?

【问题讨论】:

    标签: mongodb mongoose database


    【解决方案1】:

    我在这里稍微讨论一下,请先阅读: https://stackoverflow.com/a/27285313/68567

    对于您的情况,选项 3(将一些数据保留在您的主要模型中)可能是最好的。关键是避免数组无限制增长

    这与 Mongodb 分配文档的方式有关。 http://docs.mongodb.org/manual/core/storage/ “MongoDB 中的每个文档都存储在一个记录中,该记录包含文档本身和额外的空间或填充,它允许文档随着更新的结果而增长。”

    当节点分配新文档时,它会根据插入文档的大小和集合中已有文档的大小来分配空间。 (在上面的链接中阅读更多内容。)如果您的某些文档比其他文档大几个数量级,这可能会导致碎片化。

    避免在“cmets”子文档数组中包含过多文档的方法是使用 $push 和 $slice 命令。 http://docs.mongodb.org/manual/reference/operator/update/slice/

    所以存储“最近的 5 个”并在项目首次加载时显示它们。 (或最旧的,或您想要使用的任何其他排序标准。)然后为用户提供一种加载更多内容的方法,该方法将对包含所有这些内容的集合进行单独的往返。

    【讨论】:

      猜你喜欢
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-25
      • 2015-10-12
      相关资源
      最近更新 更多