0

这是输入集合:

{"itemName" : "A1", "voteType" : "up"}
{"itemName" : "A1", "voteType" : "up"}
{"itemName" : "A1", "voteType" : "down"}
{"itemName" : "A2", "voteType" : "up"}
{"itemName" : "A2", "voteType" : "down"}
{"itemName" : "A2", "voteType" : "down"}
{"itemName" : "A2", "voteType" : "down"}
and so on...

有谁知道如何通过聚合获得以下文件?

另外,我们如何使用 Spring Data 来实现呢?

{ "id" : "A1", "CountUp" : 2, "CountDown" : 1}
{ "id" : "A2", "CountUp" : 1, "CountDown" : 3}
4

1 回答 1

2

这应该有效。运算符可$cond用于填充CountUpCountDown字段。之后它只是对数据进行分组

     {
         $project:
           {
             itemName: 1,
             countUp:
               {
                 $cond: [ { $eq: [ "$voteType", "up" ] }, 1, 0 ]
               },
               countdown:
               {
                 $cond: [ { $eq: [ "$voteType", "down" ] }, 1, 0 ]
               }
           }
      },

     { $group : { _id : "$itemName", countUp: { $sum: "$countUp" }, countDown: { $sum: "$countdown" } }} 
于 2015-02-04T12:16:21.400 回答