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

Strapi如何正确使用$and操作符编写多条件过滤查询

Strapi中使用$and实现多条件过滤的正确方法

原代码失效原因

你的代码存在两个语法错误,导致过滤逻辑完全不符合预期:

  • 同一个JS对象中重复定义同名键$and、重复定义同名键createdAt,后面的键值会直接覆盖前面的配置,最终实际生效的过滤条件只剩最后一个$and里的status_invitor和外层的status_invited,时间范围条件完全丢失
  • Strapi要求$and逻辑操作符接收数组类型的条件集合,而非对象类型,对象格式的写法不会被解析为多条件同时匹配的逻辑

正确写法

把所有需要同时满足的过滤条件,按顺序放进$and对应的数组中即可,每个条件单独作为数组的一项:

const query = qs.stringify({
  filters: {
    $and: [
      { createdAt: { $gte: firstDayOfTheMonth } },
      { createdAt: { $lt: lastDayOfTheMonth } },
      { status_invitor: statusFilter },
      { status_invited: statusFilter }
    ]
  }
});

简化写法

Strapi默认同级的过滤条件本身就是「同时满足(AND)」的逻辑,不需要显式调用$and就可以实现相同效果,代码更简洁:

const query = qs.stringify({
  filters: {
    createdAt: {
      $gte: firstDayOfTheMonth,
      $lt: lastDayOfTheMonth
    },
    status_invitor: statusFilter,
    status_invited: statusFilter
  }
});

注:只有当你需要嵌套组合$or/$and这类复杂逻辑时,才需要显式使用$and操作符,普通的多字段等值、范围过滤直接写在filters下即可。

内容的提问来源于stack exchange,提问作者Sayed Hassan Hussaini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:57:19