如何在聚合的投影阶段将元素的子集从一个数组添加到另一个数组

问题描述 投票:0回答:0

我有一个包含子对象 A 和 B 的父信息的输入文档。我想用类型 B 的所有链接对象投影对象 A 的粒度信息。此链接信息存在于 childObjectTypeA.relatedObjectsTybeB.

例如: childObjectTypeA 和 childObjectTypeB 是一个对象数组。

单个 childObjectTypeA 可以链接到任意数量的 childObjectTypeB。 链接的 childObjectTypeB 的 ID 存在于字段 relatedObjectsTypeB 中。我想投影 relatedObjectsTypeA 的所有详细信息,其中也包括它的所有链接对象(relatedObjectsTypeB)。

**样本对象**:

{
  "id": "89671",
  "childObjectTypeA": [
    {
      "childTypeA": {
        "value": "Child object name1",
        "valueKey": "78637"
      },
      "parentObjectId": "89671",
      "relatedObjectsTybeB": [
        "65443"
      ]
    },
    {
      "childTypeA": {
        "value": "Child object name2",
        "valueKey": "98231"
      },
      "parentObjectId": "89671",
      "relatedObjectsTybeB": [
        "65443",
        "27865"
      ]
    }
  ],
  "childObjectTypeB": [
    {
      "childTypeB": {
        "value": "Type B Child name1",
        "valueKey": "65443"
      },
      "parentObjectId": "89671"
    },
    {
      "childTypeB": {
        "value": "Type B Child name2",
        "valueKey": "27865"
      },
      "parentObjectId": "89671"
    }
  ]
}

期望的输出是为object Type A创建一个粒度级别的信息,它也有类型B相关对象的信息 所需的输出对象

[
  {
    "childAValue": "Child object name1",
    "valueKey": "78637",
    "parentObjectId": "89671",
    "relatedChilObjectsB": [
      {
        "childTypeB": {
          "value": "Type B Child name1",
          "valueKey": "65443"
        },
        "parentObjectId": "89671"
      }
    ]
  },
  {
    "childAValue": "Child object name2",
    "valueKey": "98231",
    "parentObjectId": "89671",
    "relatedChilObjectsB": [
      {
        "childTypeB": {
          "value": "Type B Child name1",
          "valueKey": "65443"
        },
        "parentObjectId": "89671"
      },
      {
        "childTypeB": {
          "value": "Type B Child name2",
          "valueKey": "27865"
        },
        "parentObjectId": "89671"
      }
    ]
  }
]
mongodb mongodb-query nosql aggregation-framework nosql-aggregation
© www.soinside.com 2019 - 2024. All rights reserved.