2017-02-17 33 views
1

我有這個集合(Spieltag)有兩個文件在MongoDB中:帶有 「where子句」 上SpielerID總不是一個函數 - 的MongoDB /流星

 
0: Object Note:2.5 SaisonID:201516 SpielerID:105 SpieltagID:1 Tore:1 _id:"vkD5sMCdZdntoCFGP" 

1: Object Note:3 SaisonsID:201516 SpielerID:105 SpieltagID:1 Tore:0 _id:"PrqokMS47K4vx4KR4" 

我想總結Note(2.5 + 1) 。

這是我曾嘗試使用:

Spieltag.aggregate({ $match: { 
     { SpielerID: { $gte: 105 } } 
} }, 
{ $group: { _id : null, sum : { $sum: "$Note" } } }); 

但它不工作,投擲Aggregate is not a function。任何想法有什麼不對?

+1

的可能的複製[如何使用聚合函數在流星](http://stackoverflow.com/questions/28425316/how-to-use-aggregate-function-in-meteor) –

回答

1

首先,你需要添加的總包流星:

meteor add meteorhacks:aggregate 

其次,你必須在總傳遞一個數組參數,如:

Spieltag.aggregate([{ 
    $match: { 
    SpielerID: { $gte: 105 }, 
    }, 
}, { 
    $group: { 
    _id: null, 
    sum: { $sum: '$Note' }, 
    }, 
}]); 
+0

我做了一個更新... meteorhacks:聚合添加,版本1.3.0 meteorhacks:收集-utils的添加,版本1.2.0 已添加mongo-livedataata,版本1.0.9 然後我將上面的聚合函數插入到chrome中的java腳本控制檯中。但我得到同樣的錯誤。 我必須在我的應用程序中插入一個聲明,這將工作嗎? – HansMuff

+0

對不起,正如https://github.com/meteorhacks/meteor-aggregate中提到的,聚合只能在服務器端工作。 要在客戶端上使用它,您可以從服務器發佈聚合函數的結果並在客戶端中訂閱它。 –

+0

當我說我必須在服務器端構建聚合函數時,我該怎麼辦? 在我的JS文件我有以下結構... 如果(Meteor.isClient){ ... } 如果(Meteor.isServer){ ... } 同時在此刻服務器只有Meteor.startup(function(){ });而其他任何東西都在isClient「區域」 – HansMuff