Пусть следующий агрегирования запрос:MongoDB - Совокупный Muliple строка
Machine.aggregate( [ { $match : { $and: [ {"idc": req.query.idc }, {"customer":req.query.customer} ] } } ,{"$group":{_id: {"cluster":"$cluster","idc":"$idc","type":"$type"},"SumCores":{"$sum":"$cores"},"SumMemory": { "$sum":"$memory" }}}, { $sort : { idc : -1, cluster: 1 } } ]);
возвращающее:
[
{
"_id": {
"cluster": 1,
"idc": "LH5",
"type": "Virtual"
},
"SumCores": 112,
"SumMemory": 384
},
{
"_id": {
"cluster": 1,
"idc": "LH5",
"type": "Physical"
},
"SumCores": 192,
"SumMemory": 768
},
{
"_id": {
"cluster": 1,
"idc": "LH8",
"type": "Virtual"
},
"SumCores": 232,
"SumMemory": 469
},
{
"_id": {
"cluster": 1,
"idc": "LH8",
"type": "Physical"
},
"SumCores": 256,
"SumMemory": 1024
}
]
Есть ли способ изменить агрегацию для получения этого желаемого выхода:
[
{
"_id": {
"cluster": 1,
"idc": "LH5"
},
"Virtual": {
"SumCores": 112,
"SumMemory": 384
},
"Physical": {
"SumCores": 192,
"SumMemory": 768
}
},
{
"_id": {
"cluster": 1,
"idc": "LH8"
},
"Virtual": {
"SumCores": 232,
"SumMemory": 469
},
"Physical": {
"idc": "LH8",
"type": "Physical"
}
}
]
Предположения:
- Там всегда будет физический и виртуальный «пар» в IDC/Cluster
Я рад получить решения, которые:
а) изменение агрегации запроса б) получающего существующий данные и изменить его в этот формат в качестве библиотеки и/или алгоритма
Это именно то, что мне было нужно - я тоже пошел с вашим предложением :) – CMS
Просто быстрая записка - как я могу получить доступ к «Физическим» общим ядрам в вашем методе? – CMS
@CMS Аналогичным образом, по существу, отфильтровывает требуемый элемент для соответствия массиву. Или в зависимости от того, как данные использовались (например, для отображения), я просто перебирал разделы для создания списка для каждого типа. Зависит от использования. –