2016-02-11 79 views
-2

我想要計算字段數appIdmonth,dayyearMongoDB query for 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的數,其中criticalThresholdcritical更大?

回答

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