2017-02-27 41 views
1

我想彙總一些簡單的數據,並獲得每個人在我的情況下的總時間。我已經添加了包meteorhacks:聚合到流星,如一些指導建議。但是我無法讓它工作。Meteorhacks:aggregate給出了「MongoError:一個流水線階段規範對象只能包含一個字段。」

這是文件如何看待在MongoDB中:

{startnumber: 1, name: "John Doe", time: 10000} 
{startnumber: 1, name: "John Doe", time: 5000} 
{startnumber: 2, name: "Jane Doe", time: 11000} 

,這是我的聚集看起來如何在服務器/ main.js:

Meteor.methods({ 
    getTotalTime() { 
    rankings.aggregate({ 
     $match: { startnumber: 1 }, 
     $group: { _id: '$name', total: { $sum: '$time' } } 
    }); 
    } 
}); 

期望的結果應該有希望是:

{startnumber: 1, name: "John Doe", time: 15000} 

我在做什麼錯?

回答

1

每個管道階段應包含在它自己的文檔中。添加$project階段以格式化回覆

.aggregate( 
    { $match: { startnumber: 1 } }, 
    { $group: { _id: '$name', startnumber:{ $first:'$startnumber' }, total: { $sum: '$time' } } }, 
    { $project: { name: '$_id', startnumber:1, total:1, _id:0 } } 
) 
相關問題