【发布时间】:2019-09-03 22:05:34
【问题描述】:
所以我是聚合框架的新手。我有 2 个包含这些文档的集合:
用户
{
'_id': ObjectId(user1),
'name': 'Name1',
'event': ObjectId(event1)
},
{
'_id': ObjectId(user2),
'name': 'Name2',
'event': ObjectId(event2)
},
{
'_id': ObjectId(user3),
'name': 'Name3',
'event': ObjectId(event1)
}
活动
{
'_id': ObjectId(event1),
'name': 'Event2',
'type': 'Party'
},
{
'_id': ObjectId(event2),
'name': 'Event2',
'type': 'Meeting'
}
预期输出
[
{
'_id': ObjectId(user1),
'name': 'Name1',
'event': 'Party'
},
{
'_id': ObjectId(user2),
'name': 'Name2',
'event': 'Meeting'
},
{
'_id': ObjectId(user3),
'name': 'Name3',
'event': 'Party'
}
]
如您所见,根据上面的解释,我想对用户进行分组,并根据他们参加的活动返回用户。
到目前为止我做了什么(聚合用户)
[
{
"$lookup":
{
"from": "events",
"localField": "event",
"foreignField": "_id",
"as": "Events"
}
},
{
"$unwind": "$Events"
},
{
"$group":
{
"_id":
{
"type": "$Events.type"
}
}
}
]
我只得到活动文件。输出是:
{ 'type':'Party'},
{'type': 'Meeting'}
有人可以指导我如何按字段从另一个集合中的文档对集合中的文档进行分组吗?
谢谢!
【问题讨论】:
-
相关:stackoverflow.com/questions/44042329/… 尝试使用
Events.type- 放弃$ -
那行不通。那么它只会被视为一个字符串。 @DroidX86
标签: python mongodb aggregation-framework mongoengine