我试图汇总一些简单的数据,并在我的案例中获得每个人的总时间。我已经添加了包meteorhacks:聚合到meteor,正如一些指南建议的那样。但是,我无法让它发挥作用。
这是文档在mongoDB中的外观:
{startnumber: 1, name: "John Doe", time: 10000}
{startnumber: 1, name: "John Doe", time: 5000}
{startnumber: 2, name: "Jane Doe", time: 11000}
这就是我的聚合在server / main.js中的样子:
Meteor.methods({
getTotalTime() {
rankings.aggregate({
$match: { startnumber: 1 },
$group: { _id: '$name', total: { $sum: '$time' } }
});
}
});
理想的结果应该是:
{startnumber: 1, name: "John Doe", time: 15000}
我做错了什么?
答案 0 :(得分:2)
每个管道阶段都应该包含在自己的文档中。添加$project
阶段以格式化响应
.aggregate(
{ $match: { startnumber: 1 } },
{ $group: { _id: '$name', startnumber:{ $first:'$startnumber' }, total: { $sum: '$time' } } },
{ $project: { name: '$_id', startnumber:1, total:1, _id:0 } }
)