2012-07-05 45 views
2

我有數據形式MongoDB中獲得最新的日期爲分組

{userid: 123, 
actiontype: 'loggedin', 
timestamp: date-time} 

我想運行一個查詢,將組用戶ID和操作類型的獨特組合中的數據,並用最新的返回文檔時間戳值。

任何想法,我可以做到這一點? 目前我正在考慮做一個查找,然後將返回的值拋入數組(python和pymongo),然後在那裏執行操作。但是,我覺得直接在MongoDB上做這件事會更加優雅/高效。

+0

你可以用map-reduce來做到這一點,是的。嘗試一下。 –

回答

6

你可以這樣做Mongo group function.下面的代碼顯示了你如何做到這一點。

db.stack.group(
{ 
    keyf: function(doc) { 
     return { 
      userid : doc.userid, 
      actiontype : doc.actiontype 
     }; 
    }, 
    reduce: function(obj,prev) { 
     if (prev.maxdate < obj.timestamp) { 
      prev.maxdate = obj.timestamp; 
     } 
    }, 
    initial: {maxdate:0} 
}); 
+0

謝謝。我明天會試一試。 –