假设我们有一个带有一个文档的db.orders文档集合:
{"_id": "5ef62e0c586c78491530e4d5", "items": [{ "description": "desc1", "parts": ["5ef62e0c586c78491530e4d7", "5ef62e0c586c78491530e4d8"] } ], "createdBy": "userId"}
[更正:items字段现在是一个数组]
另一个带有两个部分文档的db.parts集合:
{"_id": "5ef62e0c586c78491530e4d7", "name": "part1" }
{"_id": "5ef62e0c586c78491530e4d8", "name": "part2" }
我想在第一个集合上构建一个聚合,用实际的文档替换parts数组中的ObjectId。结果应为:
{"_id": "5ef62e0c586c78491530e4d5", "items": [{ "description": "desc1", "parts":
[
{"_id": "5ef62e0c586c78491530e4d7", "name": "part1" },
{"_id": "5ef62e0c586c78491530e4d8", "name": "part2" }
]
}], "createdBy": "userId"}
任何想法将不胜感激!
答案 0 :(得分:1)
您需要使用$lookup运算符:
SELECT p.pid, p.name, c.name, c_2.name
FROM product p
JOIN productcategory pc on p.pid = pc.pid
JOIN kategorie c on pc.kid = c.kid
JOIN productcategory pc_2 on p.pid = pc_2.pid
JOIN kategorie c_2 on pc_2.kid = c_2.kid
WHERE p.name LIKE '%table%' OR p.name LIKE '%chair%'
AND c.kid < c_2.kid;