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

Gatsby GraphiQL使用elemMatch过滤数组返回全部元素如何解决

问题原因

你现在的写法把elemMatch筛选条件加在了mKT节点的查询参数上,这个筛选逻辑是:只要mKT的data数组中存在至少一个name等于Apple的元素,就返回整个mKT节点,不会对data子数组本身做过滤,所以拿到的还是完整的数组内容。

修复方案

把筛选条件加到data字段的参数上,直接过滤数组内的元素:

query MyQuery {
  mKT {
    data(filter: {name: {eq: "Apple"}}) {
      name
      description
    }
  }
}

这个查询返回的data会是只包含匹配元素的数组,如果你需要单个对象,在代码中取数组的第一个元素即可:

const targetItem = data.mKT.data[0]

如果你的插件配置不支持data字段的filter参数,检查对应数据源/转换器插件的配置,确保数组字段的过滤能力已开启,Gatsby官方的gatsby-transformer-json等插件默认支持该能力。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 09:24:06