2014-02-26 50 views
0

我正在嘗試獲取過去15天內每天創建的記錄數。我想出了以下的查詢:MongoDB中的兩個字段分組?

db.users.aggregate(
    { $group: { 
      _id: {$dayOfYear: '$created'}, 
      created: {$sum:1}, 
      date: {$first: '$created'} 
     } 
    }, 
    {$sort: {_id: 1}}, 
    {$limit: 15} 
); 

哪個幾乎可以工作,但它也會計算在一年前的天數。所以如果在2014年2月20日創建了2條記錄,並且在2013年2月20日創建了3條記錄,那麼將返回5條記錄(當我想要的是2條時)。我希望也可以像下面那樣分組:

db.users.aggregate(
    { $group: { 
      _id: {{$dayOfYear: '$created'},{$year: '$created'}}, 
      created: {$sum:1}, 
      date: {$first: '$created'} 
     } 
    }, 
    {$sort: {_id: 1}}, 
    {$limit: 15} 
); 

但是這是一個語法錯誤。我應該如何嘗試對特定日期創建的記錄進行計數?

回答

2
db.users.aggregate(
    { $group: { 
      _id: { 
       day: { $dayOfYear: '$created' }, 
       year: { $year: '$created' } 
      }, 
      count: { $sum: 1 }, 
      date: { $first: '$created' } 
     } 
    }, 
    { $project: { _id: 0, date: 1, count: 1 } }, // Only for more clear result. 
    { $sort: { date: -1 } }, // If you want to view last 15 days - sort by descending. 
    { $limit: 15 } 
); 
+0

完美,謝謝! –

相關問題