How about using @cascade directive to remove unnecessary users from the result who don’t have pets aged over 40?
Checkout:
https://dgraph.io/docs/graphql/queries/cascade/#sidebar
e.g.
queryUser @cascade {
id
pets(filter: {
age: {gt: 40}
}) {
id
name
}
}