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

如何在sails-dynamodb中实现OR条件查询?

在sails-dynamodb中执行OR条件查询的正确方式

首先得指出你代码里的关键问题:同一个JavaScript对象中不能有重复的键,你写的{ title: { contains: 'P' }, title: {contains: 'p'} }会被自动覆盖成{ title: {contains: 'p'} },第二个对象同理,这就导致你的OR逻辑完全不符合预期。

根据你的需求,我分两种情况给出正确的写法:

情况1:匹配「title含P/p 或 description含P/p」

如果是要查询所有满足title包含P或p,或者description包含P或p的记录,需要把单个字段的多条件也用嵌套的or包裹:

let query = {
  where: {
    or: [
      // title包含P 或 title包含p
      { or: [{ title: { contains: 'P' } }, { title: { contains: 'p' } }] },
      // description包含P 或 description包含p
      { or: [{ description: { contains: 'P' } }, { description: { contains: 'p' } }] }
    ]
  },
  sort: "1"
};

情况2:匹配「(title含P 且 description含P) 或 (title含p 且 description含p)」

如果你的需求是两组组合条件的OR(比如同时匹配大小写一致的title和description),那写法是这样的:

let query = {
  where: {
    or: [
      { title: { contains: 'P' }, description: { contains: 'P' } },
      { title: { contains: 'p' }, description: { contains: 'p' } }
    ]
  },
  sort: "1"
};

额外优化建议

DynamoDB的contains操作是区分大小写的,如果你只是想实现大小写不敏感的模糊匹配,更高效的方式是:

  • 存储数据时,把title和description字段统一转换为小写(或大写)存入数据库
  • 查询时直接用小写(或大写)的关键词,比如{ title: { contains: 'p' } },这样就能匹配所有包含P或p的内容,无需写多个OR条件,性能更好。

内容的提问来源于stack exchange,提问作者Gustavo García González

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:11:09