How to use dgraph to perform subqueries

Hey @luke :pray:

Although I’m not exactly sure what you are wanting to do, my guess is that you want to use @cascade.

So, a DQL query for your problem could look like this:

{
  qUrlNode(func: type(UrlNode)) @filter(eq(UrlNode.visit_time, "2023-06-01")) @cascade(UrlNode.visit_user_name) {
    url
    UrlNode.url_name
    UrlNode.belong {
      uid
      AppNode.app_name
      AppNode.app_host
    }
    UrlNode.visit_user_name @filter(eq(UserNode.user_name, "t.t")) {
      uid
      UserNode.user_name
    }
  }
}

So you query via UrlNode to filter for visit_time. Then @cascade filters out all results where UrlNode.visit_user_name with filter user_name returns null. This result also applies to AppNode results.

Hope this helps! :raised_hands:

P.S.: If the set mutation is the real mutation you have been using, then you are missing dgraph.type on all of the nodes.