2016-06-07 164 views
0

我需要修改值作爲MongoDB中聚合框架的一部分。這裏下面MongoDB聚合字段添加

是我的代碼: -

db.coln.aggregate(
{$match: {"year" : "2010","companyName" :/ABC/}}, 
{$unwind:"$hierarchy"}, 
{$unwind:"$hierarchy.Details" }, 
{ 
    $group: 
    { "_id": 
     {"companyName": "$companyName", 
     "year": "$year", 
     "costHead": "$hierarchy.originalName"}, 
"total": { "$sum": "$hierarchy.Details.values" }} 
}, 
{$project: {_id:0, "Firm":"$_id.companyName", "Year":"$_id.year","costHead":"$_id.costHead", "Total":"$total"}}) 

在上面的聚合框架。這裏是我的結果集: -

{公司: 「ABC」,年份: 「2010」,costHead: 「MNFC」,總計:5000}

現在,結果是除了第三精字段 - costHead:Mnfc。我想用「製造」來代替「Mnfc」。

我試着這樣做的多種方式。

  1. 我試着在組中使用(cond和if),但是這樣會弄亂分組。

  2. 我嘗試使用該鏈表,如果在項目,但它只是產生什麼自$投影算只能什麼項目從以前的水平傳遞,而不是生成它。

出於這裏的想法。 任何幫助將被折衷。

問候 馬里奧

回答

1

再次嘗試在$投影使用COND。它似乎對我很好:

{$project: {_id:0, "Firm":"$_id.companyName", "Year":"$_id.year", 
    "costHead": { $cond: { if: { $eq: [ "$_id.costHead", "Mnfc"] }, then: "Manufacturing", else: "$_id.costHead" } }, 
    "Total":"$total" 
}} 
+0

感謝您的解決方案,但我想我應該明確指出這個問題本身。它比這大得多。畢竟 - 我試圖通過使用聚合框架來實現ETl: - – Mario

+0

這工作,..謝謝 – Mario