(1)В коллекцию добавлено следующее:
{ "_id" : 1, "hitsPerOneSecond" : [ 2, 3, 5, 4, 1, 2, 3, 4, 1, 2 ], "startTime" : ISODate("2012-04-07T10:41:33.380Z"), "returnCodeHits" : { "300" : 5, "200" : 12 }, "xxxServer" : "xxx:8100", "statsSummarizedToSeconds" : 10, "pathStats_xxx_api_get_version" : [ 0.2280779683225852, 0.030849283020361273, 0.9947690473370484 ], "pathStats_xxx_api_get_response" : [ 1.2163705612407407, 1.0602539963494662, 1.4853219936411421 ], "type" : "xxxType", "startTimeStr" : "07-04-2012:10AM" }
{ "_id" : 2, "hitsPerOneSecond" : [ 2, 3, 5, 4, 1, 2, 3, 4, 1, 2 ], "startTime" : ISODate("2012-04-07T10:41:43.380Z"), "returnCodeHits" : { "300" : 5, "200" : 12 }, "xxxServer" : "xxx:8100", "statsSummarizedToSeconds" : 10, "pathStats_xxx_api_get_version" : [ 0.2280779683225852, 0.030849283020361273, 0.9947690473370484 ], "pathStats_xxx_api_get_response" : [ 1.2163705612407407, 1.0602539963494662, 1.4853219936411421 ], "type" : "xxxType", "startTimeStr" : "07-04-2012:10AM" }
(2)При выполнении следующей агрегации:
db.newStats.aggregate({$unwind: "$hitsPerOneSecond"},{$group:{_id:"$startTimeStr", totalHits: {$sum: "$hitsPerOneSecond"}, totalHitsCount: {$sum: 1}, avgHit: {$avg: "$hitsPerOneSecond"}, minHit: {$min:"$hitsPerOneSecond"}, maxHit:{$max: "$hitsPerOneSecond"}}});
(3)Результаты выводятся правильно:
{
"result" : [
{
"_id" : "07-04-2012:10AM",
"totalHits" : 54,
"totalHitsCount" : 20,
"avgHit" : 2.7,
"minHit" : 1,
"maxHit" : 5
}
],
"ok" : 1
}
(4)Однако мне нужно выполнить раскрутку на 'pathStats_xxx_api _получить_ответ'(из коллекции)в той же агрегации, что и выше, чтобы я мог иметь выходные данные totalResponses, totalResponsesCount, avgResponse, minResponse и maxResponse в том же результате, что и выше. Таким образом, мой результат должен выглядеть примерно так:
{
"result" : [
{
"_id" : "07-04-2012:10AM",
"totalHits" : 54,
"totalHitsCount" : 20,
"avgHit" : 2.7,
"minHit" : 1,
"maxHit" : 5,
"totalResponses" : ??
"totalResponsesCount": ??
"avgResponse" : 2.7,
"minResponse" : 1,
"maxResponse" : 5
}
],
"ok" : 1
}
Не знаю точно, как добавить больше $unwind в ту же агрегацию, так как я почти готов!