MongoDB聚合字段添加

时间:2016-06-07 17:49:45

标签: mongodb aggregation-framework projection

我需要将值修改为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"}})

在上面的聚合框架中。这是我的结果集: -

  

{Firm:" ABC",Year:" 2010",costHead:" Mnfc",Total:5000}

现在,结果很好,除了第3个字段 - costHead:Mnfc。我想取代" Mnfc"与"制造"。

我尝试了多种方法。

  1. 我尝试在小组部分使用(cond和if),但这会弄乱分组。

  2. 我尝试使用cond,如果在项目中,它只是产生什么,因为$ projection运算符只能投影从先前级别传递的内容而不生成它。

  3. 这里的想法。 任何帮助都会被贬低。

    此致 马里奥

1 个答案:

答案 0 :(得分:1)

再次尝试在$ projection中使用cond。它似乎对我很好:

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