2013-10-26 128 views
-1

我已經嘗試了幾天現在想出一個工作聚合,但我只是沒有得到它。如何使用Mongo聚合來獲得每個天數組的總「頁面瀏覽量」

我有一個類似於以下內容的集合。

_id: ObjectId("52672ca368a56f481d000045"), 
totalviews: 5, 
views: [ 
    {date: ISODate("2013-10-23T01:55:47Z") }, 
    {date: ISODate("2013-10-23T01:55:50Z") }, 
    {date: ISODate("2013-10-23T23:31:08Z")}, 
    {etc.} 
] 

我想要做的就是視圖每一天的總數量,所以我可以顯示日期列表(從「意見」)和總的那些日子。

有人可以告訴我如何做到這一點嗎?

謝謝

編輯 - 下面的代碼工作正常 下面是在的情況下提供的解決方案的PHP代碼它可以幫助別人:

$ops = array(
array('$unwind' => '$views'), 
array('$project' => array('date'=>array(
    'day'=>array('$dayOfMonth'=>'$views.date'), 
    'month'=>array('$month'=>'$views.date'), 
    'year'=>array('$year'=>'$views.date')) 
)), 
array('$group'=>array('_id'=>'$date','views'=>array('$sum'=>1))) 
); 

$data = $collection->aggregate($ops); 
+1

請提供例如輸入和預期的輸出。現在你的問題還不清楚。您希望每個文檔的每日觀看次數或每個集合的每日觀看次數?你也應該展示你到目前爲止嘗試過的東西。 – zero323

回答

0

這應該做的伎倆。

db.foo.aggregate(
    {$unwind: "$views"},  
    {$project: {date: { 
     day: {$dayOfMonth: "$views.date"}, 
     month: {$month: "$views.date"}, 
     year: {$year: "$views.date"}, 
    }}}, 
    {$group: {_id: {id: "$_id", date: "$date"}, views: {$sum: 1}}} 
) 

如果你想每天的意見收集總數與這一個替換組階段:

{$group: {_id: "$date", views: {$sum: 1}}} 
+0

謝謝,這工作。我錯過了如何正確分解日期。 – pyrosz

+0

如果這有助於您,請將其標記爲已回答。 – azz0r

相關問題