Select document with replased sub docucemt

I have a document like https://prnt.sc/w4s28w

{
    "_scope": "testcasino",
    "_type": "ahelp",
    "account_id": "0e7e5619-9c06-43e4-b9c0-b4346c9fe351",
    "data": {
      "en": {
        "article": "games",
        "category": "074ed36b-4d08-430e-86f1-606fb75848f8",
        "games": "Malta EN",
        "provider": "Analyst EN"
      },
      
      "sv": {
        "article": "rollete",
        "category": "49e08a31-d108-45a1-81a8-36cce98b7863",
        "games": "Malta SV",
        "provider": "Analyst SV"
      }
    }
  }

and i did a query

SELECT OBJECT_PUT(d1.data.en,‘category’ , OBJECT_PUT(link.data.en , ‘id’, meta(link).id ) )
FROM test AS d1
JOIN cms-data AS link ON KEYS d1.data.en.category
where d1._type= ‘ahelp’

but I need to get full document where all category value will by replaced to it linked object from link.data.en like

  {
        "_scope": "testcasino",
        "_type": "ahelp",
        "account_id": "0e7e5619-9c06-43e4-b9c0-b4346c9fe351",
        "data": {
          "en": {
            "article": "games",
            "**category":{ "id": "074ed36b-4d08-430e-86f1-606fb75848f8", "name":"XXX"},**
            "games": " EN",
            "provider": "Analyst EN"
          },
          
          "sv": {
            "article": "rollete",
**"category":{ "id": "074ed36b-4d08-430e-86f1-606fb75848f8", "name":"XXX"},**
            "games": "SV",
            "provider": "Analyst SV"
          }
        }
      }

Please help me ? how can I do this select request ?

SELECT d.*,
    OBJECT v.name: OBJECT_PUT(v.val, "category", (SELECT META(s).id, s.* FROM `cms-data` AS s USE KEYS v.val.category)[0] )) 
    FOR v IN OBJECT_PAIRS(d.data) 
   END AS data
FROM test AS d
WHERE d._type = "ahelp";

Thank you! The request is work but elapsed: 3.8s
Explain https://prnt.sc/w57z1u
How can I optimizing this question?

You have predicate on _type only not much can be optimized

But maximum elapsed time is in subquery
OBJECT v.name: OBJECT_PUT(v.val, “category”, (SELECT META(s).id, s.* FROM cms-data AS s USE KEYS v.val.category)[0] ))
FOR v IN OBJECT_PAIRS(d.data)
END AS data

Is  a  query option where the data may not be requested   every time?
SELECT d.*,
    OBJECT v.name: OBJECT_PUT(v.val, "category",  FIRST o FOR  o IN cavs WHEN o.id = v.val.category END) 
    FOR v IN OBJECT_PAIRS(d.data) 
   END AS data
FROM test AS d
LET cavs =  (SELECT META(s).id, s.* FROM `cms-data` AS s USE KEYS OBJECT_VALUES(d.data)[*].category)
WHERE d._type = "ahelp";