2017-03-02 5 views
0

Lesen MongoDB Dokumentation über aggregation Betrieb habe ich this gefunden:Aggregation auf Multi-Feld

db.orders.aggregate(
    [ 
     { $match: { status: "A" } }, 
     { $group: { _id: "$cust_id", total: { $sum: "$amount" } } }, 
     { $sort: { total: -1 } } 
    ], 
    { 
     explain: true 
    } 

)

Aber, nehme ich an ein anderes Feld phone genannt haben, wie kann ich aggregieren über cust_id und phone ?

ich wie folgt versucht haben:

{ $group: { _id: {"$cust_id", "$phone"}, total: { $sum: "$amount" } } }, 

Aber nicht funktioniert

EDIT

ich dieses Verhalten wollen:

SELECT SUM(amount) 
FROM orders 
GROUP BY cust_id, phone 

Aber ich habe Fehler (Ich muss einen Screenshot anhängen, da von MongoChef I kann nicht textlichen Fehler):

enter image description here

+2

* funktioniert nicht * ist keine Problemaussage. Was erwartest du und was bekommst du stattdessen? –

+0

möglich duplizieren: http://stackoverflow.com/questions/22932364/mongodb-group-values-by-multiple-fields – RudyVerboven

Antwort

2

Es gibt nichts zu erklären ist. Es ist nur eine falsche Syntax. Objekte sollten Feldnamen haben, nicht nur Feldwerte. Zum Beispiel:

{ $group: { _id: {id:"$cust_id", phone:"$phone"}, total: { $sum: "$amount" } } }, 
+0

Danke! Es ist sehr einfach, meine Schuld! –

Verwandte Themen