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

Strapi 4 API如何实现AND与OR组合的复杂过滤?

Strapi 4 API实现复杂组合过滤(AND嵌套OR)

完全可行,Strapi 4支持通过嵌套$and和$or操作符实现你需要的组合过滤逻辑。核心是通过层级嵌套将两组OR条件用AND关联,避免平级条件导致的逻辑混乱。

核心过滤结构

以下是匹配你需求的过滤规则,以JSON格式展示清晰的逻辑层级:

{
  "filters": {
    "$and": [
      // 第一组OR:标签满足任意一个即可
      {
        "$or": [
          { "tag": { "$containsi": "tag值" } },
          { "tag2": { "$containsi": "tag2值" } },
          { "tag3": { "$containsi": "tag3值" } }
        ]
      },
      // 第二组OR:文本字段满足任意一个即可
      {
        "$or": [
          { "title": { "$containsi": "文本过滤条件" } },
          { "body": { "$containsi": "文本过滤条件" } },
          { "introduction": { "$containsi": "文本过滤条件" } }
        ]
      }
    ]
  }
}

实际请求示例(URL参数形式)

如果是通过前端GET请求调用API,需要将上述结构转为URL编码的参数:

/api/你的集合名称?filters[$and][0][$or][0][tag][$containsi]=tag值&filters[$and][0][$or][1][tag2][$containsi]=tag2值&filters[$and][0][$or][2][tag3][$containsi]=tag3值&filters[$and][1][$or][0][title][$containsi]=文本过滤条件&filters[$and][1][$or][1][body][$containsi]=文本过滤条件&filters[$and][1][$or][2][introduction][$containsi]=文本过滤条件

关键说明

  1. 层级逻辑:$and数组中的两个元素分别对应你需求中的两组OR条件,只有同时满足两组内的任意一个条件,结果才会返回。
  2. $containsi用法:该操作符仅适用于字符串类型字段,实现不区分大小写的包含匹配,符合你的标签和文本过滤要求。
  3. 避免平级错误:之前的问题大概率是将所有OR条件放在同一层级,没有用$and将两组OR包裹,导致所有条件变为逻辑或。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:22:50