DQL check if array contains subset of values

Lets say we have the following schema:

type Cart {
  id: ID!
  name: String! @search(by: [exact, regexp, term])
  items: [Item] @hasInverse(field: inCarts)
}
type Item {
  id: ID!
  name: String! @search(by: [exact, regexp, term])
  inCarts: [Cart]
}

Is it possible, within one query, to filter items by Item.name, resulting in A and then returning all carts where Cart.item contains A.

E.g.:

query {
  var(func: type(Item)) @filter(some_filter) {
      filteredItems as uid  
  }
  carts(func: type(Cart)) @filter(has_to_contain(filtereditems)) {
      uid
  }
}

Cheers! :slight_smile:

There are several ways to do this. Here some examples.

 {
  carts(func: type(Cart)) @cascade {
      uid
      items @filter(eq(item.name, "A")){
        uid
        item.name
      }
    }
}
  
  
 {
  
  IT as var(func: eq(item.name, "A"))
  
  carts(func: type(Cart)) @filter(uid_in(items, uid(IT))) {
      uid
      items {
        uid
        item.name
      }
    }
}
  
query {
  var(func: type(Item)) @filter(some_filter) {
      filteredItems as uid  
  }
  carts(func: type(Cart)) @filter(uid_in(items, uid(filtereditems) )) {
      uid
  }
}