I wonder if it is going by the number of documents matched in the WHERE. And if using the WHERE from your SELECT as the WHERE in the UPDATE would give 1 mutation.
WHERE type=‘mytype’
vs.
WHERE type=‘mytype’ AND ANY a IN answers SATISFIES a.v = ‘a2’ END
You need to control by WHERE clause. Once WHERE condition is true the document must mutate even if not changed. conditions in SET/UNSET are more like case expression and mutate document even if it is same.
UPDATE bucket SET a.v = 'a2' FOR a IN answers WHEN a.q = 'q1' AND a.v = 'a1' END
WHERE type= "mytype"
AND ANY a IN answers SATISFIES a.q = "q1" AND a.v = "a1" END
The above one tells WHERE if any answer ARRAY has q = “q1” AND v = “v1” that document will qualify mutate. Then SET clause FOR clause tells which array element to modify.