Mongo聚合:添加条件字段

时间:2018-03-22 19:28:03

标签: mongodb aggregation-framework

我有一个包含多个阶段的聚合管道。在这些阶段之后,简化的结果是这样的:

{
    feature1: [{random: 125}],
    feature2: [{a:"fsfs", val: [125]}]
}

我想添加一个基于以下条件设置的新字段type

  • feature1.size> 0和feature2.size> 0然后输入='返回'
  • feature2.size> 0然后键入=' front'
  • 否则键入=' none'

feature1feature2数组的内容不重要,类型基于数组是否已填充。

我的想法是使用$addFields阶段与$cond运算符,但我无法弄清楚语法。

1 个答案:

答案 0 :(得分:1)

使用$switch

这样的东西
{
  "$addFields":{
    "type":{
      "$switch":{
        "branches":[
          {
            "case":{
              "$and":[
                {"$gt":[{"$size":"$feature1"},0]},
                {"$gt":[{"$size":"$feature2"},0]}
              ]
            },
            "then":"back"
          },
          {
            "case":{
             "$gt":[{"$size":"$feature1"},0]
            },
            "then":"front"
          }
        ],
        "default":"none"
      }
    }
  }
}