2017-03-02 43 views
0

此mongodb中的文檔具有屬性createdAt = Date.now(),這是時代以及屬性useridname
需要的是name='abc'創建的文檔數量少於或等於4個月前,但需要統計由同一個userId創建的同一天創建的文檔的數量。
最好的辦法是什麼?聚合或地圖或組合或...某些文檔組的組數

回答

0

您可以嘗試下面的聚合。

var date = new Date(Date.UTC(2017, 2, 3, 0, 0, 0)); 
date.setMonth(date.getMonth() - 4); 

db.collection.aggregate([{ 
    $match: { 
     createdAt: { 
      $gte: date, 
      $lte: new Date(Date.UTC(2017, 2, 3, 0, 0, 0)) 
     }, 
     name: "abc" 
    } 
}, { 
    $group: { 
     _id: { 
      date: { 
       $dayOfMonth: "$createdAt" 
      }, 
      month: { 
       $month: "$createdAt" 
      }, 
      year: { 
       $year: "$createdAt" 
      }, 
      userid: "$userid" 
     }, 
     count: { 
      $sum: 1 
     } 
    } 
}]); 
+0

我得到ISODate未在服務器控制檯上定義。我在澳大利亞,不知道這是否有任何區別.. –

+0

更新爲使用JavaScript日期對象。看看它是否有幫助 – Veeram