私はテーブルで "グループ"を実行し、別のテーブルと "結合"しようとしています。 対応する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関数を一緒に使うことができないのだろうかと思います。もしそうなら、回避策がありますか、またはクエリを実行する最適な方法は何ですか?
[私が使用しているのmongo DBバージョン:> db.version()3.2.7]
あなた $検索がのJOIN INNERように動作するようにしたい場合は
意味があります。私はあなたが一致していたはずの電子メールアドレスの空の配列を取得していたことに気付かなかった。 – Wake