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

Sanity.io GROQ:按跨文档引用次数获取高引用标签

GROQ实现跨文档类型标签引用统计方案

你可以通过「聚合所有引用来源的标签ID → 按标签ID匹配计数 → 排序切片」的逻辑实现需求,不需要依赖反向查询,执行效率更高。

可直接复用的GROQ代码(取全站引用Top10标签)

{
  // 收集所有page、article文档中的标签引用ID,打平为一维列表
  "allTagReferences": *[_type in ["page", "article"] && defined(tags) && !(_id in path("drafts.**"))]{
    "refs": tags[]._ref
  }.refs[],
  // 遍历所有正式发布的标签,统计对应引用数
  "topTags": *[_type == "tag" && !(_id in path("drafts.**"))]{
    _id,
    label,
    "referenceCount": count(^.allTagReferences[@ == _id])
  }
  // 按引用数倒序,取前10条
  | order(referenceCount desc)
  | [0...10]
}.topTags

逻辑说明

  • 语句默认排除了所有草稿状态的文档、标签,如果需要统计草稿内容,删掉筛选条件里的!(_id in path("drafts.**"))即可。
  • 第一部分会把所有page、article下tags数组里的标签引用ID全部提取出来,一个ID出现一次就代表被引用一次,不会漏统计。
  • 第二部分遍历每个标签时,会直接在前面收集的全量引用ID列表里匹配当前标签的_id,匹配到的总数就是该标签在全站两类文档中的总引用量。
  • 如果后续新增了其他带标签引用的文档类型(比如post、product等),只需要把新的类型名加到["page", "article"]数组中,不需要修改其他逻辑。
  • 如果不需要限制返回数量,直接删掉最后的| [0...10]切片语句,就会返回所有标签按引用量从高到低排序的完整列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:57:17