我想按appId
,month
和day
计算名称为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}}的数量?
答案 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 }
}
}
])