Nester Array Remove last element not working with ARRAY_REMOVE

Hi All,

If there is a nested array 2 levels, ARRAY_APPEND works with for loop, however, if I have to do ARRAY_REMOVE(array,array[-1]), it is not working.

Update default use keys ‘doc::1234’
SET fsLevel.secondLevel = ARRAY_REMOVE(fstLevel.secondLevel,fstLevel.secondLevel[-1])
for fstLevel within FirstLevel end
returning *;

The below works,

update default
use keys ‘doc::1234’
set fstLevel.secondLevel = ARRAY scndLevel
for scndLevel in fstLevel .secondLevel
when scndLevel!= fstLevel .secondLevel [-1] end
for fstLevel in FirstLevel end

however, I am not sure how will I delete the array if post update the ARRAY_LENGTH(fstLevel.secondLevel) = 0.The below is not working

update default
use keys ‘doc::1234’
set fstLevel.secondLevel = ARRAY scndLevel
for scndLevel in fstLevel .secondLevel
when scndLevel!= fstLevel .secondLevel [-1] end //till this works
for fstLevel in FirstLevel end
unset fstLevel.secondLevel
for fstLevel in firstLevel when ARRAY_LENGTH(fstLevel.secondLevel) = 0 end //checking and unset not working

UPDATE default  AS d  USE KEYS  "doc::1234"
SET fl.secondLevel = ARRAY_REMOVE(fl.secondLevel, fl.secondLevel[-1])
 FOR  fl  IN d.FirstLevel END    RETURNING d.*;

   UPDATE default  AS d  USE KEYS  "doc::1234"
    SET fl.secondLevel =  CASE WHEN ARRAY_LENGTH(fl.secondLevel) > 1 THEN ARRAY_REMOVE(fl.secondLevel, fl.secondLevel[-1]) ELSE MISSING END
     FOR  fl  IN d.FirstLevel END    RETURNING d.*;

NOTE: ARRAY_REMOVE() removes all occurrences if there is duplicates. You can use ARRAY slice

UPDATE default  AS d  USE KEYS  "doc::1234"
SET fl.secondLevel = (CASE WHEN ARRAY_LENGTH(fl.secondLevel) > 1
                           THEN fl.secondLevel[0:ARRAY_LENGTH(fl.secondLevel)-1]
                           ELSE MISSING
                       END)
                FOR fl IN d.FirstLevel END RETURNING d.*;