Segun he leido ese campo esta preparado para recibir tanto un array como una sentecia sql, sin embargo cuando lo he utilizado siempre me pedia un array, tal vez por ello te pide la llave como array.
prueba lo siguiente para ver si funciona.
Código PHP:
$where[] = $this->_db->quoteInto($this->_primary . ' = ?', $id);
$this->update($data,$where);
Saludos