2015-10-05 50 views
0

用戶將鏈接插入到Mongo Collection中,我想根據集合中特定鏈接的次數檢索最流行的數據。對於像有多少鏈接從Youtube即將靜態的數據,你可以做到以下幾點:查找Mongo Collection中動態生成數據的次數

Meteor.users.find({ "site": "youtube" }).count() 

,但如何去動態數據,作爲一個例子這樣一個環節:

Meteor.users.find({ "url": "youtube.com/watch?v=u1z4vkPWkLQ" }).count() 

編輯:

如何在客戶端上顯示?當我執行以下操作時,在控制檯中出現錯誤,說明Videos.aggregate不是函數。

Template.frontPage.helpers({ 
 
\t mostDownloadedVideos: function() { 
 
\t \t return Videos.aggregate(
 
\t \t \t [ 
 
\t \t \t \t { $unwind : "$filename"}, 
 
\t \t \t \t { $group : { _id : "$filename", number : { $sum : 1} } }, 
 
\t \t \t \t { $sort : {number : -1} }, 
 
\t \t \t \t { $limit : 3 } 
 
\t \t \t ] 
 
\t \t); 
 
\t } 
 
});

回答

1

可以使用蒙戈的aggregate功能。在你的情況下:

Meteor.users.aggregate([ 
    { $project : { popular : { $url : "$url" } } } , 
    { $group : { _id : {url:"$url"} , number : { $sum : 1 } } }, 
    { $sort : { "_id.number" : -1 } } 
    ]) 

有了這個你可以根據受歡迎程度採取最高的結果或顯示列表。

+0

感謝您的回答,您可以檢查我的編輯,BC我有一些問題與。 – mhlavacka

+0

你可以結合@ KubaWyrobek的答案。我不知道流星不暴露集合函數。請記住,最好在服務器端運行聚合以獲得最佳性能。您也可以使用[this](http://stackoverflow.com/questions/18520567/average-aggregation-queries-in-meteor)作爲實現自定義聚合方法的參考。 – JavaGhost

1

默認情況下,聚合函數未在流星中暴露。 但是你可以用包訪問:meteorhacks:aggregate

var metrics = new Mongo.Collection('metrics'); 
var pipeline = [ 
    {$group: {_id: null, resTime: {$sum: "$resTime"}}} 
]; 
var result = metrics.aggregate(pipeline); 

Source