根据字段的条件存在2个值进行分组

时间:2019-04-17 14:58:59

标签: mongodb aggregation-framework

给出这样的文档:

{

    "identifier" : "1234",
    "year" : 2018,
    "days" : 30
}

年份只能有2个值:上一年和本年。

当数据库中同时包含上一年度和当前年份时,我只需要在小组赛阶段中包含上一年度。

这是我当前的查询:

db.getCollection('test').aggregate([
      {  
         "$match":{  
            "identifier":{  
               "$in":[  
                  "1234",
               ]
            },

         }
      },
      {  
         "$group":{  
            "_id":null,
            "days":{  
              "$sum":"$days"

            }
         }
      }
])

有可能吗? 谢谢

1 个答案:

答案 0 :(得分:1)

您可以$groupyear,然后选择最早的($sort + $limit

db.col.aggregate([
    {  
       "$match":{  
          "identifier":{  
             "$in":[  
                "1234",
             ]
          }
       }
    },
    {
        $group: {
            _id: "$year",
            days: { $sum: "$days" }
        }
    },
    {
        $sort: {
            _id: 1
        }
    },
    {
        $limit: 1
    }
])