mongodb与$ group和$ lookup聚合

韩国铁路

我正在尝试在一个表上执行“分组依据”,然后将其“与”另一个表“联接”。相应的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仍然没有内部联接功能,因此我尝试使用“ $ lookup”来完成任务。这是我的代码:

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的情况下运行查询,则效果很好。所以我想知道$ group和$ lookup函数是否不能一起使用。如果是这样,是否有解决方法,或者完成查询的最佳方法是什么?

[我正在使用的mongo db版本:> db.version()3.2.7]

韩国铁路

我找到了问题的答案。我得到空数组的原因是我在$ lookup中使用localField的方式。

由于我正在尝试将table_2与table_1的$ group结果联接在一起,因此本地字段应为“ _id.email”。

因此,有效的查询将是:

db.table_1.aggregate([
    {$group : {_id : {email: "$email", type:"$type"},total: { $sum: "$amount" }}},
    {$lookup: {from: "table_2", localField: "_id.email", foreignField: "email", as: "details"}},
    {$match: {details: {$ne: []}}}
]);

感谢@Wake和@Clement的帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MongoDb聚合$ lookup和$ project

来自分类Dev

在 mongodb 中使用多个 $lookup 和聚合

来自分类Dev

使用带有$ lookup和$ match的聚合的搜索查询mongodb

来自分类Dev

MongoDB聚合查询优化:$ match,$ lookup和double $ unwind

来自分类Dev

MongoDB聚合$ lookup $ match

来自分类Dev

MongoDB聚合查询$ lookup

来自分类Dev

无法开始$ match和$ group MongoDB聚合

来自分类Dev

Mongodb聚合按id和group匹配

来自分类Dev

mongodb聚合$ group $ sort

来自分类Dev

MongoDb:聚合$ lookup并过滤外部文档

来自分类Dev

mongodb 聚合中的多个 $lookup 阶段

来自分类Dev

Mongo聚合和带有$ lookup的$ group嵌套数组

来自分类Dev

Elixir和MongoDB聚合

来自分类Dev

MongoDB $ lookup和$ match

来自分类Dev

了解MongoDB聚合和GroupBy

来自分类Dev

Mongodb geoNear和组聚合

来自分类Dev

MongoDB,TimeSeries和聚合框架

来自分类Dev

Mongodb聚合和嵌套分组

来自分类Dev

GraphQL 和 MongoDB `$geoNear` 聚合

来自分类Dev

MongoDB 文档设置和聚合

来自分类Dev

如何使用MongoDB将`$ lookup`聚合为`findOne()`

来自分类Dev

评估MongoDB聚合查询的复杂性:$ lookup的成本

来自分类Dev

如何使用MongoDB C#驱动程序聚合$ lookup?

来自分类Dev

如何在mongoDB的嵌套数据中使用聚合$ lookup?

来自分类Dev

在聚合查询中具有条件的Mongodb $ lookup

来自分类Dev

如何在mongodb $ lookup聚合内使用NOT IN数组条件

来自分类Dev

MongoDB 聚合 $lookup 以从主集合中返回不匹配的项目

来自分类Dev

MongoDB $ lookup:限制和用法

来自分类Dev

Mongodb聚合框架:$ group是否使用索引?