2013-08-27 16 views
5

Das ist mein Dokument Schema:

{ 
    "_id" : ObjectId("5203c8b91afdd7160c6ecfd3"), 
    "answer_calls" : "", 
    "start" : "10:00", 
    "end" : "10:30", 
    "VDN_name" : "SP_SYNDICATED_7", 
    "total_calls" : "1", 
    "date" : "01/07/2013", 
    "abandoned_calls" : "", 
    "voicemail_calls" : "" 
} 

Ich versuche, durch aggregations Rahmen dieses:

> dir.aggregate( 
[ 
{ $group: 
    {_id: {fecha:"$date", hora: "$start"}, 
    llamadas :{ $sum:"$total_calls"}, 
    abandoned: {$sum:"$abandoned_calls"}, 
    mail: {$sum:"$voicemail_calls"} 
    } 
}, 
{ $sort: {fecha:1,hora:1} } 
]) 

Und hier ist ein Beispiel für die Ergebnis:

{ 
    "_id" : { 
     "fecha" : "16/07/2013", 
     "hora" : "18:30" 
    }, 
    "llamadas" : 0, 
    "abandoned" : 0, 
    "mail" : 0 
} 

Das Problem ist, dass es nicht $ Summe und weder $ sort

Weiß jemand warum?

+1

Erster Blick Sie müssen '{$ sort: { '_id.fecha': 1, '_ id.hora': 1 }} 'statt oder sogar' {$ sort: {_id: 1}} 'könnte es tun – Sammaye

+3

Und' $ sum' arbeitet mit numerischen Feldern, nicht mit Strings. – JohnnyHK

+0

Vielen Dank, das hilft mir und funktioniert wie ich brauche. – Willem

Antwort

6

Die Lösung war:

dir.aggregate( 
[ 
{ $group: 
    {_id: {fecha:"$date", hora: "$start"}, 
    llamadas :{$sum:"$total_calls"}, 
    answer :{ $sum:"$answer_calls"}, 
    abandoned: {$sum:"$abandoned_calls"}, 
    mail: {$sum:"$voicemail_calls"} } 
}, 
{ $sort: 
    {'_id.fecha':1 , '_id.hora':1} } 
]) 

Vielen Dank noch einmal an Sammaye und JohnnyHK

Verwandte Themen