2013-08-27 41 views
5

Đây là sơ đồ tài liệu của tôi:

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

tôi cố gắng, bằng cách gộp-framework, đây:

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

Và đây là một ví dụ về kết quả:

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

vấn đề là nó không $ sum và không $ sort

Có ai biết tại sao không?

+1

nhìn Trước tiên, bạn cần '{$ loại: { '_id.fecha': 1, '_ id.hora': 1 }} 'thay thế hoặc thậm chí' {$ sort: {_id: 1}} 'có thể làm điều đó – Sammaye

+3

Và' $ sum' hoạt động với các trường số, không phải là chuỗi. – JohnnyHK

+0

Cảm ơn bạn rất nhiều giúp tôi và làm việc như tôi cần. – Willem

Trả lời

6

Giải pháp là:

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

Cảm ơn bạn một lần nữa để Sammaye và JohnnyHK