2013-08-27 13 views
5

To jest mój schemat dokumentu:

{ 
    "_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" : "" 
} 

próbuję, poprzez agregację-ram, w tym:

> 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} } 
]) 

A oto przykład z wynik:

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

problemem jest to, że nie $ suma i ani $ sortowanie

Czy ktoś wie dlaczego?

+1

najpierw spojrzeć trzeba '{$ sort: { '_id.fecha': 1, '_' id.hora: 1 }} 'zamiast lub nawet' {$ sort: {_id: 1}} 'może to zrobić – Sammaye

+3

' '$ sum' działa z polami numerycznymi, a nie łańcuchami. – JohnnyHK

+0

Dziękuję bardzo, że mi pomaga i działa tak, jak potrzebuję. – Willem

Odpowiedz

6

Rozwiązaniem było:

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} } 
]) 

Dziękuję ponownie do Sammaye i JohnnyHK