home · Posts · Archive · Tags

在mongodb裡面將兩個group merge成一個結果

結果

{ "results": [ { "path": "/mcu/course/2D動畫實務", "id": "2D動畫實務" }, ... { "path": "/mcu/professor/楊健貴", "id": "楊健貴" }, ... }

原本資料

使用facet+project

Col_course.aggregate([ { $facet: { teacher_subject: [ { $group: { _id: { teacher: "$teacher", subject: "$subject" } } }, { $project: { _id: 0, path: { $concat: ["/mcu/ratings/", "$_id.teacher", "/", "$_id.subject"], }, id: { $concat: ["$_id.teacher", " ", "$_id.subject"], }, }, }, ], teacher: [ { $group: { _id: { teacher: "$teacher" } } }, { $project: { _id: 0, path: { $concat: ["/mcu/professor/", "$_id.teacher"], }, id: { $concat: ["$_id.teacher"], }, }, }, ], subject: [ { $group: { _id: { subject: "$subject" } } }, { $project: { _id: 0, path: { $concat: ["/mcu/course/", "$_id.subject"], }, id: { $concat: "$_id.subject", }, }, }, ], }, }, { $project: { results: { $setUnion: ["$teacher_subject", "$teacher", "$subject"] }, }, }, { $unwind: "$results" }, { $replaceRoot: { newRoot: "$results" } }, ]);

Ref

👈Go Back

@alanhc