嵌套数组对象的 $lookup 聚合

时间:2021-05-20 12:19:37

标签: mongodb mongodb-query aggregation-framework

我有 category 集合,其中包含子类别嵌入对象。我需要编写聚合脚本来首先从这个集合查找到 storelisting 集合。然后将商品列表字段添加到相应的子类别中。

类别

{
  "_id": "",
  "categoryName": "",
  "subCategories": [
    {
      "subCategoryId": "",
      "subCategoryName": "",
      "storeListingIds": [
        "1",
        "2"
      ]
    },
    {
      "subCategoryId": "",
      "subCategoryName": "",
      "storeListingIds": [
        "3","4","5"
      ]
    }
  ],
  "order": 2,
  "createdAt": {
    "$date": "2020-12-01T22:26:11.669Z"
  },
  "updatedAt": {
    "$date": "2021-04-27T17:17:25.442Z"
  },
  "_class": ""
}

商品列表

{
  "_id": "1",
  "storeListingName": "",
  "storeListingUrl": "",
  "catalogueIds": [
    ""
  ],
  "_class": ""
},
{
  "_id": "2",
  "storeListingName": "",
  "storeListingUrl": "",
  "catalogueIds": [
    ""
  ],
  "_class": ""
},
{
  "_id": "3",
  "storeListingName": "",
  "storeListingUrl": "",
  "catalogueIds": [
    ""
  ],
  "_class": ""
},
{
  "_id": "4",
  "storeListingName": "",
  "storeListingUrl": "",
  "catalogueIds": [
    ""
  ],
  "_class": ""
},
{
  "_id": "5",
  "storeListingName": "",
  "storeListingUrl": "",
  "catalogueIds": [
    ""
  ],
  "_class": ""
}

我需要在集合上方查找表单到 storeListing 集合。我也想要 storeListing 的所有字段。

结果应该是这样的:

{
  "_id": "",
  "categoryName": "",
  "subCategories": [
    {
      "subCategoryId": "",
      "subCategoryName": "",
      "storeListingIds": [
        "1",
        "2"
      ],
      "storeListings":[
        {
          "_id": "1",
          "storeListingName": "",
          "storeListingUrl": "",
          "catalogueIds": [
            ""
          ],
          "_class": ""
        },
        {
          "_id": "2",
          "storeListingName": "",
          "storeListingUrl": "",
          "catalogueIds": [
            ""
          ],
          "_class": ""
        }
      ]
    },
    {
      "subCategoryId": "",
      "subCategoryName": "",
      "storeListingIds": [
        "3","4","5"
      ],
      "storeListings":[
        {
          "_id": "3",
          "storeListingName": "",
          "storeListingUrl": "",
          "catalogueIds": [
            ""
          ],
          "_class": ""
        },
        {
          "_id": "4",
          "storeListingName": "",
          "storeListingUrl": "",
          "catalogueIds": [
            ""
          ],
          "_class": ""
        },
        {
          "_id": "5",
          "storeListingName": "",
          "storeListingUrl": "",
          "catalogueIds": [
            ""
          ],
          "_class": ""
        }
      ]
    }
  ],
  "order": 2,
  "createdAt": {
    "$date": "2020-12-01T22:26:11.669Z"
  },
  "updatedAt": {
    "$date": "2021-04-27T17:17:25.442Z"
  },
  "_class": ""
}

0 个答案:

没有答案