2017-05-05 1 views
0

Ich habe eine Entität "Ledger", die ich summieren muss, aber nur für einen Benutzer. Unten ist was ich habe, was kurz vor der Arbeit steht. Sie werden jedoch für jeden Benutzer "user_id" summiert. Ich habe Tausende von Benutzern, also Tausende von Ledgern für jede user_id. Ich muss den Durchschnitt für einen bestimmten Benutzer finden.Wie summiere ich ein Feld für nur eine Entität?

Instanzen:

User "_id" Ledger "user_id"

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

Antwort

1

erste Filter auf user_id und dann die Gruppierung

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

Ok ausführen. Das hat sie gemittelt. Danke! Wie kann ich nur diejenigen in Betracht ziehen, bei denen Betrag_in_Cents $ gt (größer als) 2800 ist? – jdog

Verwandte Themen