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

Sanity技术求助:如何按类别数组筛选Post内容

实现Sanity多类别数组筛选帖子的GROQ查询修改

原查询仅支持单个类别筛选,以下是修改后的版本,支持传入类别slug数组进行筛选:

版本1:筛选包含至少一个指定类别的帖子(最常用场景)

*[_type == "post" 
  && defined(slug.current) 
  && (!defined($search) || title match $search || publishedAt match $search || author->name match $search) 
  && defined($categories) 
  && categories[]->slug.current overlaps $categories
] 
| order(publishedAt desc) {
  title,
  publishedAt,
  "categories": coalesce(
    categories[]->{
      _id,
      slug,
      title
    }, []
  ),
  author->{
    name
  }
}

版本2:筛选包含所有指定类别的帖子

如果需要帖子必须同时属于数组里的所有类别,可使用以下条件替换上面的类别筛选逻辑:

&& defined($categories) 
&& all($cat in $categories => $cat in categories[]->slug.current)

关键修改说明

  • 将单个类别参数$category改为数组参数$categories,明确参数类型
  • 使用overlaps操作符快速判断两个数组是否有交集(适用于“至少一个匹配”的场景)
  • 修复了原查询中的笔误:order(publishAt desc)改为order(publishedAt desc),避免排序报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:12:15