Update Array of object's when object.name is present, if not present add object to Array

Below new query which i have tried is also not working properly.

UPDATE info USE KEYS 'allDocs’
SET userList = ARRAY CASE WHEN v.name = “ABC” THEN {“icon”: “NA”, “description”: “NA”, “name”: “Pay”, “status”: “0”}
WHEN “ABC” NOT IN userList [*].name THEN {“icon”: “NA”, “description”: “NA”, “name”: “Pay”, “status”: “0”} ELSE v END FOR v IN userList END;

This actually, Even though the name is not present in the Array, it just replacing the old ArrayObject with the new one

Original Array

{
  "userList ": [
  {
    “description”: “NA”,
    “name”: “123”,
    “icon”: “NA”,
    “status”: “0”
   }]
}

After running the above query

   {
      "userList ": [
      {
        “description”: “NA”,
        “name”: “pay”,
        “icon”: “NA”,
        “status”: “0”
       }]
    }

so i have tried different one

UPDATE info USE KEYS 'allDocs’
SET userList = ARRAY CASE WHEN v.name = “ABC” THEN {“icon”: “NA”, “description”: “NA”, “name”: “Pay”, “status”: “0”}
WHEN “ABC” NOT IN userList [*].name THEN ARRAY_APPEND(userList, {“icon”: “NA”, “description”: “NA”, “name”: “Pay”, “status”: “0”}) ELSE v END FOR v IN userList END;

This is creating another Array inside the Array

My original Array
{
"userList ": [{
“description”: “NA”,
“name”: “123”,
“icon”: “NA”,
“status”: “0”
}]
}

When i run the above query ARRAY_APPEND query
it updated the array to

{
  "userList ": [
    [
     {
       "description": "NA",
       "name": "123",
       "icon": "NA",
       "status": "0"
     },
     {
       "description": "NA",
       "name": "pay",
       "icon": "NA",
       "status": "0"
     }
    ]
  ]
}

I think its because of “FOR v IN userList”, if i already have two Objects in the Array, it is creating three Array’s and adding new Object in to all three Arrays.

The update of Array Object is working Ok, but adding a new Object in to Array is giving me problems