我試圖在表上執行「group by」,並與另一個表「加入」它。 相應的SQL語句應該是:
SELECT T1.total, T1.email, T1.type, table_2.name FROM
(SELECT SUM(amount) AS total, email, type
FROM table_1
GROUP BY email, type) T1
INNER JOIN table_2
on T1.email = table_2.email
但由於MongoDB中仍然沒有內部連接的功能,我試圖用「$查找」和做任務。這裏是我的代碼:
db.table_1.aggregate([
{$group : {_id : {email: "$email", type:"$type"},total: { $sum: "$amount" }}},
{$lookup: {from: "table_2", localField: "email", foreignField: "email", as: "details"}} ]);
但結果我發現了,細節的回報和空對象:
{ "_id" : { "user" : "[email protected]", "type" : "Car" }, "total" : 2, "details" : [ ] }
{ "_id" : { "user" : "[email protected]", "type" : "Bike" }, "total" : 3, "details" : [ ] }
{ "_id" : { "user" : "[email protected]", "type" : "Car" }, "total" : 1, "details" : [ ] }
但是,如果我運行查詢,而無需使用$組,它工作正常。所以我想知道$ group和$ lookup函數是否不能一起使用。如果是的話,是否有解決方法或什麼是完成查詢的最佳方式?
[我使用蒙戈DB版本:> db.version()3.2.7]
有道理。我沒有意識到你得到的應該是一個匹配的電子郵件地址空陣列。 – Wake