我有餐厅菜单结构,可以嵌套多个级别
例如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")
]
}
]
}
]
}
我想输出带有填充有项目集合的实际对象的项目。