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

如何编写Spring criteria查询筛选products数组中name含指定字符串的文档

问题根因

你最初的写法使用in操作符是精确全值匹配,仅能命中name字段完全等于ABC或DEF的数组元素,无法实现子串包含的模糊匹配效果。

正确实现方案

场景1:匹配products数组中存在至少1个元素的name包含ABC或DEF的文档

有两种等效写法可选:

// 写法1:使用elemMatch显式匹配数组元素
query.addCriteria(Criteria.where("products").elemMatch(
    Criteria.where("name").regex("ABC|DEF")
));

// 写法2:简化写法,MongoDB对数组字段默认匹配任意元素满足条件
query.addCriteria(Criteria.where("products.name").regex("ABC|DEF"));

如果需要忽略大小写匹配,给正则加i参数即可:

query.addCriteria(Criteria.where("products.name").regex("ABC|DEF", "i"));

场景2:匹配products数组中同时存在包含ABC的元素和包含DEF的元素的文档

query.addCriteria(
    Criteria.where("products.name").regex("ABC")
    .and("products.name").regex("DEF")
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:06:01