【问题标题】:MongoDB counts multiple fieldsMongoDB 统计多个字段
【发布时间】:2015-02-04 11:33:36
【问题描述】:

这里是输入集合:

{"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}

【问题讨论】:

    标签: mongodb spring-data aggregation-framework spring-mongo


    【解决方案1】:

    这应该可以。 $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" } }} 
    

    【讨论】:

      猜你喜欢
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多