Получить ведомость по категориям и складам

Ответы получены от MySQL через X Protocol. Учебные коллекции после чтения удалены.

Наблюдаемый результат программы
НаблюдениеРезультат
cable1 SKU / 10 шт. / 3000 руб.
lighting2 SKU / 6 шт. / 7800 руб.
Групп категория + склад3
Исходных документов в базе4
Документы и дополнительные наблюдения
{
    "category_rows": [
        {
            "skus": 1,
            "units": 10,
            "amount": 3000,
            "category": "cable"
        },
        {
            "skus": 2,
            "units": 6,
            "amount": 7800,
            "category": "lighting"
        }
    ],
    "category_warehouse_rows": [
        {
            "units": 10,
            "category": "cable",
            "warehouse": "central"
        },
        {
            "units": 2,
            "category": "lighting",
            "warehouse": "annex"
        },
        {
            "units": 4,
            "category": "lighting",
            "warehouse": "central"
        }
    ],
    "all_documents": [
        {
            "_id": "CABLE",
            "sku": "CABLE",
            "price": 300,
            "stock": 10,
            "active": true,
            "category": "cable",
            "warehouse": "central"
        },
        {
            "_id": "LAMP",
            "sku": "LAMP",
            "price": 1200,
            "stock": 4,
            "active": true,
            "category": "lighting",
            "warehouse": "central"
        },
        {
            "_id": "OLD",
            "sku": "OLD",
            "price": 99,
            "stock": 100,
            "active": false,
            "category": "lighting",
            "warehouse": "central"
        },
        {
            "_id": "STRIP",
            "sku": "STRIP",
            "price": 1500,
            "stock": 2,
            "active": true,
            "category": "lighting",
            "warehouse": "annex"
        }
    ]
}

Полный JSON результата, включая реальные идентификаторы, сохранён рядом в result.json.