graphql - 如何过滤嵌套列表

use*_*422 8 graphql hotchocolate

我目前正在尝试根据给定的 id 过滤嵌套列表,但不理解所需的语法。虽然我改变了实体和属性,但这就是我正在尝试的

{
  companies{
    company{
      id,
      name,
      offices(where:{officeId: {eq: 2}}){
        officeId,
        address,
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在返回的数据中,我想要所有办公室 ID 等于 2 的公司及其办公室。这可能吗?我该怎么做?

Pas*_*enn 9

通过这种方式,您可以过滤所有公司内的办公室 试试这个

{
  companies(where:{company: {offices: {some: {officeId: {eq: 2}}}}}){
    company {
      id 
      name 
      offices {
        officeId
        address
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我没有尝试过,但这似乎并不等同。它将过滤掉组中没有此类办公室 ID 的公司,但会列出列表中具有办公室 ID #2 的公司的所有办公室。所描述的查询建议包含所有公司,并且它们的办公室列表要么为空,要么仅包含 ID #2。 (3认同)
  • @PascalSenn 我理解显示的 GQL 暗示“所有公司,但只列出他们的办公室#2”。这是问题“如何过滤嵌套列表”的标题:问题是如何过滤*嵌套列表*(办公室),而不是如何过滤掉任何公司本身。事实上,问题的详细信息是:“我希望所有公司及其办公室的办公室 ID 等于 2”。换句话说,正确的答案不会过滤掉没有“拥有”Office #2 的公司。它将包括公司,但产量:company.offices == [] (2认同)