Database

[{"date":"2020-04-01","income":1936.20,"num_orders":2.00,"avg_order_amount":968.10,"orders":[{"type":"direct","income":1218.60,"num_products":3.00,"avg_product_price":406.20,"products":[{"name":"product_1","amount":1.00},{"name":"product_2","amount":2.00}]},{"type":"online","income":717.60,"num_products":4.00,"avg_product_price":179.40,"products":[{"name":"product_2","amount":4.00}]}]},{"date":"2020-04-01","income":2616.90,"num_orders":2.00,"avg_order_amount":1308.45,"orders":[{"type":"direct","income":624.30,"num_products":2.00,"avg_product_price":312.15,"products":[{"name":"product_2","amount":2.00}]},{"type":"online","income":1992.6,"num_products":8.00,"avg_product_price":249.08,"products":[{"name":"product_2","amount":4.00},{"name":"product_3","amount":4.00}]}]}]

Query

db.collection.aggregate([{$group:{_id:"$date",income:{$sum:"$income"},num_orders:{$sum:"$num_orders"},avg_order_amount:{$avg:"$avg_order_amount"},orders:{$push:"$orders"},orderTypes:{$push:"$orders.type"}}},{$project:{_id:0,date:"$_id",income:1,num_orders:1,avg_order_amount:1,orders:{$map:{input:{$reduce:{input:"$orderTypes",initialValue:[],in:{$setUnion:["$$this","$$value"]}}},as:"orderType",in:{$let:{vars:{currentTypeOrders:{$filter:{input:{$reduce:{input:"$orders",initialValue:[],in:{$concatArrays:["$$this","$$value"]}}},cond:{$eq:["$$this.type","$$orderType"]}}}},in:{avg_product_price:{"$avg":"$$currentTypeOrders.avg_product_price"},income:{"$sum":"$$currentTypeOrders.income"},num_products:{"$sum":"$$currentTypeOrders.num_products"},type:"$$orderType",products:{$let:{vars:{products:{$reduce:{input:"$$currentTypeOrders.products",initialValue:[],in:{$concatArrays:["$$this","$$value"]}}}},in:{$map:{input:{$setUnion:["$$products.name",[]]},as:"product",in:{$let:{vars:{currentProducts:{$filter:{input:"$$products",cond:{$eq:["$$this.name","$$product"]}}}},in:{name:"$$product",amount:{$sum:"$$currentProducts.amount"}}}}}}}}}}}}}}}])

Result