如何使用python

时间:2019-01-08 08:59:10

标签: python mongodb

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:11proj_id:91member_emp_id:55

我想要预期的输出=>

proj_team : {
               name : 'Ravi'
               member_emp_id : '55'
               designation : 'manager'
            }

请帮助我解决。 ===================== -------- ==============

2 个答案:

答案 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}}

]):

这对我有用。

感谢您的帮助。