![](/img/trans.png)
[英]Adding value to array in sub-document (nested within main doc) without duplication - MongoDB
[英]How to select only matched sub-document of mongodb using python
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
和proj_id:91
member_emp_id:55
。
我想要預期的輸出=>
proj_team : {
name : 'Ravi'
member_emp_id : '55'
designation : 'manager'
}
請幫我解決。 ===================== -------- ================
歡迎使用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'}}])
謝謝,但是我仍然必須進行一些更改,因為它沒有提供預期的輸出,所以我進行了這些更改=>
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}}
]):
這對我有用。
謝謝您的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.