我想在多个集合中应用聚合查询。
我有以下集合,每个集合partner
中都有一个字段,我想从partner
包含john
的所有集合中过滤掉,这是我的集合-
公司
{
'com_id': 121,
'name': 'abc',
'pin': 45009,
'partner': ['john', 'mack', 'michel'],
'type': 'company'
}
冒险
{
'ven_id': 342,
'type': 'real_estate',
'partner': ['john', 'duke', 'michel']
}
属性
{
'prop_id': 213,
'address': 'xyz',
'partner': ['john', 'gore', 'tiger'],
'type': 'property'
}
以及期望的预期结果-
[
{'type': 'company', 'id': 121, 'name': 'john'},
{'type': 'real_estate', 'id': 342, 'name': 'john'},
{'type': 'property', 'id': 213, 'name': 'john'}
]
这是我尝试过的方法,但对我没有用。
mydb.company.aggregate([
{'$match': {'partner': {'$in': ['john']}}},
{'$lookup': {'from': "ventures", 'localField': "partner", 'foreignField': "partner", 'as': "final_data"}},
{'$lookup': {'from': "property", 'localField': "partner", 'foreignField': "partner", 'as': "final_data"}},
])