You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GraphQL按嵌套Tag对象多值过滤:如何获取含invoice和open双标签的文档?

基于嵌套Tag对象过滤GraphQL查询,获取同时包含多个指定标签的文档

我有一个GraphQL API,文档的数据结构如下(包含嵌套的Tag数组):

{
  "name": "...",
  "tags": [
    { "name": "..." },
    { "name": "..." }
    // 更多标签
  ]
}

我需要查询同时包含名称为"invoice"和"open"这两个Tag的所有文档,但尝试了以下查询后无法得到预期结果:

query {
  documents (
    where: { tags: { some: { name: { and: { in: [ "invoice", "open" ] } } } } }
  ) {
    nodes {
      name
      tags {
        name
      }
    }
  }
}

正确的查询写法

要实现同时匹配多个标签的需求,需要用AND逻辑组合两个独立的tags.some条件,确保文档同时存在指定的两个标签:

query {
  documents(
    where: {
      AND: [
        { tags: { some: { name: "invoice" } } },
        { tags: { some: { name: "open" } } }
      ]
    }
  ) {
    nodes {
      name
      tags {
        name
      }
    }
  }
}

原查询失效的原因

你之前的写法逻辑有误:

  • in: ["invoice", "open"]仅匹配单个Tag的name属于该数组,无法实现“同时包含两个标签”的逻辑
  • 把and和in结合使用没有意义,单个Tag的name不可能同时等于两个不同的值

通过AND数组组合两个tags.some条件,相当于要求文档满足:

  1. 存在至少一个name为"invoice"的Tag
  2. 存在至少一个name为"open"的Tag

这样就能精准筛选出同时包含两个指定标签的文档。

内容的提问来源于stack exchange,提问作者TheBinaryLoop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:25:22