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

如何在Prisma中基于字符串数组实现多值部分匹配查询?

如何用Prisma实现多值数组的部分匹配查询?

场景说明

传入的请求负载过滤条件:

filters: {
    "name": ["Joh", "Matt"]
}

数据库存储的数据:

name
____
John
Jane

需要实现数组中任意过滤值的部分匹配,即返回匹配"Joh"或"Matt"的记录(此场景下应返回John)。

此前针对单过滤值的写法如下,但不确定如何处理多值数组的情况:

name: {
   contains: filters.name,
   mode: "insensitive",
}

解决方案

可以通过Prisma的OR操作符来实现,将数组中的每个过滤值转换为独立的contains匹配条件,组合成OR逻辑数组即可。

具体代码示例:

const result = await prisma.yourModelName.findMany({
  where: {
    OR: filters.name.map(keyword => ({
      name: {
        contains: keyword,
        mode: "insensitive"
      }
    }))
  }
})

逻辑说明

  • 通过map遍历filters.name数组,把每个关键词转换成一个name模糊匹配的条件对象
  • OR操作符会让查询返回满足任意一个匹配条件的记录,正好符合"数组中任意值部分匹配"的需求
  • 此场景下,"Joh"会匹配到John,而"Matt"无匹配结果,最终返回John

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:24:25