Hallo,

Wenn du das alles in 1 Select haben willst ist das SQL etwas komplexer.
Du musst die Data-Elemente als Subselect ausführen.
Da das ganze auch nicht so einfach ist musst du mit JSON_TO_BSON und umgekehrt die JSON Blöcke zusammen mergen, da SQL diese sonst Escapen und als ganzen Text Block betrachten würde.

Lange Rede, kurzer Sinn, hier wäre das SQL:

Code:
SELECT CHAR(JSON_OBJECT(
 'Info' : JSON_OBJECT(
    'Id' : JSON_GRP1.ID
    , 'Name' : JSON_GRP1.NAME
            )            
, 'Group2' : JSON_OBJECT(
    'Email' : JSON_GRP2.MAIL
    )            
, 'Data' : 
	json_array( 
		bson_to_json((SELECT  json_to_bson (JSON_OBJECT('Data1' : json_arrayagg ( json_object ( 'Id' : JSON_GRP3.DATA1 null on null))))
                		FROM JSON_GRP3 where JSON_GRP1.ID = JSON_GRP3.ID))
       , bson_to_json((SELECT json_to_bson (JSON_OBJECT('Data2' : json_arrayagg ( json_object ( 'Id' : JSON_GRP4.DATA2 null on null))))
       					FROM JSON_GRP4 where JSON_GRP1.ID = JSON_GRP4.ID)))
), 1000)
FROM JSON_GRP1
  JOIN JSON_GRP2 ON JSON_GRP1.ID = JSON_GRP2.ID
  LEFT JOIN JSON_GRP4 ON JSON_GRP1.ID = JSON_GRP4.ID            
GROUP BY  JSON_GRP1.ID, JSON_GRP1.NAME, JSON_GRP2.MAIL
lg Andreas