Upsert, move edges to another predicate

How can I transfer edges from one predicate to another predicate using upsert?

for example

        tree as q(uid(uid_a, uid_b))
           parent_uid as parent_tree
               uid(tree) <new_predicate> uid(parent_uid)


Schema for parent tree is
parent_tree [uid] @reverse

the desired effect is that for each node uid_a
take the parent_tree uids and transfer them into uid_a 's new_predicate

However, when I ran the above upsert, it actually takes both the parent_uid of uid_a and uid_b and insert them to both uid_a’s and uid_b’s new_predicate

so instead of
uid_a <new_predicate> [ only uid_a’s original parent_tree uid ]

I get

uid_a <new_predicaate> [ uid_a’s original parent_tree uid AND uid_b’s original_parent_tree uid ]

is there anyway to do for each node?

I don’t think thats possible. So I had created this issue

Share there your thoughts and use cases.