Ich versuche, eine "Gruppe von" auf einer Tabelle durchzuführen und sie mit einer anderen Tabelle zu verbinden. entsprechende SQL-Anweisung wäre:
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
Aber da mongodb immer noch nicht haben INNER JOIN-Funktion habe ich versucht, „$ Lookup“ und tun, um die Aufgabe zu verwenden. hier ist mein Code:
db.table_1.aggregate([
{$group : {_id : {email: "$email", type:"$type"},total: { $sum: "$amount" }}},
{$lookup: {from: "table_2", localField: "email", foreignField: "email", as: "details"}} ]);
Aber in den Ergebnissen Ich erhalte Details kehrt und leeres Objekt:
{ "_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" : [ ] }
Aber wenn ich die Abfrage ohne Verwendung von $ Gruppe laufen, es funktioniert gut. Ich frage mich also, ob die Funktionen $ group und $ lookup nicht zusammen verwendet werden können. Wenn ja, gibt es einen Workaround oder was wäre der optimale Weg, um die Anfrage zu erledigen?
[Mongo db Version Ich verwende:> db.version() 3.2.7]
Sinn macht. Ich habe nicht bemerkt, dass Sie das leere Array für die E-Mail-Adresse erhalten haben, das passen sollte. – Wake