2017-09-28 8 views
1

私はそのユーザーのユーザー名と作業時間を持つ1つの表を使用しています。コレクションには、同じユーザーの複数の継続時間があります。私は、別のユーザー名と、そのユーザー名の継続時間の合計を表示します。 、テストのための10の符号化のための設計のための20時間、10時間:mongodbを使用してDistinct値を取得

db.collection.aggregate([  
    { "$match": { FacilityID: '59a53f0c6077b2a029c52b7f', ProjectID: '59c1171f734bcb3038e2bb67'} }, 
    { "$group": { _id: { TeamMemberUserID: "$TeamMemberUserID",Duration: "$Duration"}} }, 
    { "$project": { TeamMemberUserID: "$_id.TeamMemberUserID", _id: 0, Duration: "$_id.Duration", _id: 0} } 
]) 

それは、ユーザー名を3回表示すると、そのユーザーのために

siva 40 
siva 40 
siva 40 

を示しているが同じような作業の異なる種類の異なる持続時間を有します。

しかし、私はすべての仕事の継続時間の合計でユーザを表示したいと思います。

User Name: Phase  duration 
Siva   Testing  10 
siva   Coding  10 
siva   Designing 20 

期待出力:

Siva 40 

持続時間でグループ化しつつ、ユーザ名を実行する上記のクエリ。期間は、期間に応じてユーザ名を表示しているために異なります。

+0

あなたが収集し、あなたの予想出力からいくつかのサンプル文書を含むように、[編集]あなたの質問をしてくださいすることができますドキュメント? – chridam

+0

質問に一致する文書を追加してください。例: 'FacilityID'はドキュメントにありません。 – Veeram

+0

はFacilityIDに基づいてユーザーを選択しています。それは必要ではありません。 – N15

答えて

0

あなたが代わりに$group_idでそれを含めての$Duration$sumアキュムレータを適用する必要があります。

db.collection.aggregate([  
    { "$match": { FacilityID: '59a53f0c6077b2a029c52b7f', ProjectID: '59c1171f734bcb3038e2bb67'} }, 
    { "$group": { _id: "$TeamMemberUserID", Duration: {$sum: "$Duration"} } }, 
    { "$project": { TeamMemberUserID: "$_id", _id: 0, Duration: 1 } } 
]) 
+0

ありがとう@JohnnyHK – N15

+0

はい。ティックシンボルをクリックして回答としてマークしました – N15

関連する問題