MongoDB查询计数

时间:2016-02-11 19:18:21

标签: mongodb count

我想按appIdmonthday计算名称为year的字段数。

我在SQL中知道你可以做类似的事情:

SELECT COUNT(appID)
FROM stats
GROUP BY YEAR(record_date), MONTH(record_date), DAY(record_date)

这如何转化为mongodb?我试过这个:

{
  $group : {
    _id: {      
      month : { $month : "$date" },        
      day : { $dayOfMonth : "$date" },
      year : { $year : "$date" },
    },
    count: { $sum: * } //*all the fields?
  }
}

另外,我如何计算appId大于criticalThreshold的{​​{1}}的数量?

1 个答案:

答案 0 :(得分:1)

你几乎就在那里,只要为小组中的每条记录加上“1”就可以了。

{
  $group : {
    _id: {      
      month : { $month : "$date" },        
      day : { $dayOfMonth : "$date" },
      year : { $year : "$date" },
    },
    count: { $sum: 1 }
  }
}

对于第二个问题,您可能希望查看聚合框架:

db.stats.aggregate([ 
{ "$match": { "criticalThreshold": { $gt: "critical" } } },
{ "$group": 
   {
    _id: 
    {      
      month : { $month : "$date" },        
      day : { $dayOfMonth : "$date" },
      year : { $year : "$date" },
    },
    count: { $sum: 1 }
  }
}
])