2017-05-05 8 views
0

私は合計する必要があるエンティティ「元帳」を持っていますが、1人のユーザーに対してのみです。以下は私が持っているものです。これは仕事に近いです。ただし、ユーザー "user_id"ごとに合計しています。私には何千人ものユーザーがいますので、各user_idには何千もの元帳があります。私は特定のユーザーのために平均を見つける必要があります。1つのエンティティのフィールドを合計するにはどうすればよいですか?

エンティティ:その後、

ユーザー "_id" 台帳 "のuser_id"

db.ledgers.aggregate(
     [ 
     { 
      $group: 
      { 
       _id: "$user_id", 
       avgAmount: { $avg: "$amount_in_cents" } 
      } 
     } 
     ] 
    ) 

答えて

1

のuser_idの第一のフィルタとグループ化

db.ledgers.aggregate(
    [ 
    {$match: {user_id: '<USER_ID>', amount_in_cents: {$gt: 2800}}}, 
    { 
     $group: 
     { 
      _id: "$user_id", 
      avgAmount: { $avg: "$amount_in_cents" } 
     } 
    } 
    ] 
) 
+0

[OK]を実行します。それはそれらを平均した。どうも! amount_in_centsが$ gt(2800以上)のもののみを考慮するにはどうすればよいですか? – jdog

関連する問題