2016-02-11 2 views
-2

Я хочу посчитать количество полей с именем appId по month, day и year.MongoDB запрос для count

Я знаю, что в 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 больше, чем critical?

ответ

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 } 
    } 
} 
])