$ lookup与深度嵌套的数组(不同深度)

时间:2019-05-21 18:16:05

标签: mongodb

我有餐厅菜单结构,可以嵌套多个级别

例如Drinks -> Alcohol -> Cocktails 而且我事先不知道深度。 在最后一级,我有 items 数组,其中包含来自另一个集合的实际菜单项的ID。

当前,我通过在数据库查询之外执行foreach循环来解决此问题。 如果文档中嵌套了 items 对象,则我将执行单独的查询以获取匹配结果,这既缓慢又效率低下。 我想在聚合管道中进行$ lookup,但不了解嵌套深度未知时如何实现。

示例文档:

  "menu": [
    {
      "name": {
        "en": "Starters & Salads"
      },
      "content": [
        {
          "name": "Starters"
          "items": [
                ObjectId("5ce3ced2db37be764f4dd551"),
                ObjectId("5ce3cfa1db37be764f4dd553")
            ]
        },
        {
          "name": "Salads"
          "items": [
                ObjectId("5ce3d2dcdb37be764f4dd557"),
                ObjectId("5ce3d322db37be764f4dd558")
            ]
        }
      ]
    }
  ]
}

我想输出带有填充有项目集合的实际对象的项目。

0 个答案:

没有答案