spring - 条件不区分大小写的Spring数据mongo
问题描述
我有带有字符串字段的对象,我想使用字符串列表搜索所有适合(不区分大小写)到我的数组的对象。
例如
public class Person {
private String name;
}
List<String> list = Arrays.asList("teSt1", "tEsT2");
我可以创造像这样的条件:
Criteria.where("name").in(list);
但我不知道如何使它不区分大小写(用正则表达式连接)
谢谢你的帮助
解决方案
我认为以这种方式构建它是不可能的
db.getCollection('collection').find( { "field" : { "$in" : [{"$regex": '...', "$options": "i"}] } })
像这样的查询返回错误,我想出了非常非常不理想但有效的解决方案。只需为所有列表值构建正则表达式标准并将其与 OR 连接,例如:
Criteria orCriteria = new Criteria();
Criteria[] regExList = new Criteria[list.size()];
IntStream.range(0, list.size()).forEach(i -> {
regExList[i] = Criteria.where("field").regex(list.get(i), "i");
});
orCriteria.orOperator(regExList);
推荐阅读
- ios - 从带有 cameraMode = `nonAR` 的 ARView 导航到常规 AR 模式 ARView 时的 SIGABRT
- gradle - 有没有一种简单的方法可以从 gradle 任务中访问项目资源文件?
- combobox - 组合框中项目的不完整显示wpf c#
- java - 只有一个字符串字段的模型类
- node.js - 开玩笑地模拟复杂依赖项(Papa.parse 的 S3 访问)
- r - tsne 图中的特征可视化
- pandas - Python打包:了解根文件夹,从包文件中导入,
- docker - Docker构建时,Github包抛出错误
- sharepoint - SharePoint 图片库中的批量更新标记
- python - youtube_dl 错误:无法解析 JSON(由 JSONDecodeError('期望值:第 1 行第 1 列(char 0)')引起)