2017-02-17 32 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