我正在尝试聚合一些简单的数据并获取我的案例中每个人的总时间。正如一些指南所建议的那样,我已将 meteor 黑客包:聚合添加到 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}
我做错了什么?
最佳答案
每个管道阶段都应包含在其自己的文档中。添加 $project
阶段来格式化响应
.aggregate(
{ $match: { startnumber: 1 } },
{ $group: { _id: '$name', startnumber:{ $first:'$startnumber' }, total: { $sum: '$time' } } },
{ $project: { name: '$_id', startnumber:1, total:1, _id:0 } }
)
关于javascript - meteor 黑客 :aggregate gives "MongoError: A pipeline stage specification object must contain exactly one field.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42476939/