Document in Mongo ->
{
emp_id : 11
proj_info :
[{
proj_id : 91
proj_name : 'abc'
proj_team :
[{
name : 'Ravi'
member_emp_id : '55'
designation : 'manager'
}
{
name : 'Ram'
member_emp_id : '66'
designation : 'consultant'
}]
}
{
proj_id : 92
proj_name : 'pqr'
proj_team :
[{
name : 'Sham'
member_emp_id : '15'
designation : 'manager'
}]
}
{
proj_id : 93
proj_name : 'xyz'
proj_team :
[{
name : 'Karan'
member_emp_id : '25'
designation : 'manager'
}]
}
}]
}
这是我用Python编写的mongoClient查询-
collectionObject.aggregate([{'$match':"proj_info.proj_team.member_emp_id":'55',"proj_info.proj_id":'91','emp_id':'11'}},
{'$unwind':"$proj_info"},
{'$match': {"proj_info.proj_team.member_emp_id":'55'}},
{'$unwind': "$proj_info.proj_team"},
{"$group": {"_id": "$_id","key": {"$first": "$key"},"proj_team": {"$push": "proj_info.proj_team"}}}]):
示例我希望输出仅作为子文档,其输入为emp_id:11
,proj_id:91
和member_emp_id:55
。
我想要预期的输出=>
proj_team : {
name : 'Ravi'
member_emp_id : '55'
designation : 'manager'
}
请帮助我解决。 ===================== -------- ==============
答案 0 :(得分:3)
欢迎使用Stackoverflow,您可以使用${project}方法将其缩小到子文档的范围,然后可以在此处使用${match}
,如下所示:
>
collectionObject.aggregate([
{'$match':"emp_id":'11'}},
{'$project': {"proj_info": 1}},
{'$match':"proj_id":'91'}},
{'$project': {"proj_team": 1}},
{'$match': {"member_emp_id":'55'}}])
答案 1 :(得分:1)
谢谢,但是我仍然必须进行一些更改,因为它没有提供预期的输出,所以我做了这些更改=>
collectionObject.aggregate([
{'$match':{'emp_id': '11', "proj_info.pro_id": '11' }},
{'$unwind': "$proj_info"},
{'$match': {"proj_info.proj_team.member_emp_id": '55' }},
{'$unwind': "$proj_info.proj_team"},
{'$project': {"proj_info.proj_team": 1,"_id" : 0}}
]):
这对我有用。
感谢您的帮助。