How to get source uids without a reverse query?

  Alice  <friend>  Tom 
  Alice  <friend>  Bob
  Bob   <friend>  Tom 

If I 'm Tom. I want to know who point to me with a edge friend.
I should get the answer “Alice, Bob”.
I can do it with “~friend”.

query x{
   x(func: uid(Bob'sUid)){
         ~friend{
          uid 
          }
    }
}

However, I want to know, Is there any other way to make it ,without <~friend>?

The best way is using the reverse notation ~ tilde. But you could do it by adding more blocks to your query. That mean you’d have to search for all users (so it will use a lot of resources of the cluster) and then check who is friend of bob as “parent” to “child” direction. So, It is more easy stick with the tilde right? but you can do it.

e.g:

query x{
   x(func: has(is_user)) @filter(uid_in(friend, Bob'sUid){
         uid
         name
    }
}

PS. could be also “has(friend)” no problem.

1 Like

thank you , uid_in looks good .

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.