【问题标题】:Spring data mongo in condition case insensitive条件不区分大小写的Spring数据mongodb
【发布时间】:2018-08-10 14:35:44
【问题描述】:

我有带有字符串字段的对象,我想搜索所有适合(不区分大小写)到带有字符串列表的数组的对象。

例如

public class Person { 
   private String name;
}

List<String> list = Arrays.asList("teSt1", "tEsT2");

我可以创建如下条件:

Criteria.where("name").in(list);

但我不知道如何使它不区分大小写(用正则表达式连接)

感谢您的帮助

【问题讨论】:

标签: spring mongodb spring-data case-insensitive


【解决方案1】:

我认为这样构建是不可能的

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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-08
    • 2019-01-31
    • 2014-08-15
    • 2011-10-12
    • 1970-01-01
    • 2018-12-14
    • 2019-07-01
    • 1970-01-01
    相关资源
    最近更新 更多