【问题标题】:Storing/updating deeply nested object array in mongodb在 mongodb 中存储/更新深度嵌套的对象数组
【发布时间】:2021-06-25 04:22:46
【问题描述】:

我有一个以下格式的对象数组

{
    id: 1,
    text: "Group 1",
    complete: 35,
    start: "2021-10-04T00:00:00",
    end: "2021-10-16T00:00:00",
    taskOwner: "test owner 10",
    wbsNumber: "1",
    children: [
      {
        id: 2,
        start: "2021-10-04T00:00:00",
        end: "2021-10-11T00:00:00",
        text: "Task 1",
        complete: 60,
        children: [
          {
            id: 1113,
            start: "2021-10-11T00:00:00",
            end: "2021-10-16T00:00:00",
            text: "Task New",
            complete: 0,
          },
        ],
      },
    ],
  }

children 数组可以嵌套 N 次。在 mongodb 中存储/更新此数组的最佳方法是什么?

【问题讨论】:

    标签: javascript reactjs mongodb mongoose


    【解决方案1】:

    来自official Mongo documentation

    MongoDB 支持不超过 100 层的 BSON 文档嵌套。

    因此,如果 N 可以预期大于 100,那么当您尝试写入时,您的 Mongo 驱动程序会抛出错误。但是假设N 不会接近这个阈值,那么您可以像处理任何其他数据一样处理您的数据。

    这里的一种解决方法可能是使用 GridFS 集合来存储大量嵌套的 JSON 对象。您的数据实际上将存储为二进制块。但是,要意识到在 GridFS 中查询和更新数据往往比在常规 Mongo 集合中使用 BSON 文档要慢得多。在您转向 GridFS 之前,您可能需要重新考虑您的数据模型。

    【讨论】:

    • 如果我将所有项目分开存储并通过父 ID 连接它们会怎样?
    • @AkhilChandran 是的......这是一种方法。然后子对象的“深度”可以由 JSON 数组中的序数位置表示。这当然会假设您没有树状结构,其中一个父级可以有多个子级。
    猜你喜欢
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多