具有$ in和regexes列表的Spring Data MongoDB标准

时间:2016-08-05 09:03:05

标签: java spring mongodb spring-data

我发现MongoDb功能允许使用$ in通过正则表列表查找元素。例如:

db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )

当直接输入一些Mongo工具作为查询时,它可以正常工作。

现在我尝试使用spring-data-mongodb版本1.8.4.RELEASE来应用此查询。示例代码:

List<Pattern> regexList = Arrays.asList(Pattern.compile("\\b5\\b"), Pattern.compile("\\b8\\b")); //regexes to find numbers 5 or 8 in string
Query query = new Query();
query.addCriteria(Criteria.where("key").in(regexList));

它找不到任何东西,因为查询看起来像这样:

{"key" : { "$in" : [ { "$regex" : "\\b5\\b"} , { "$regex" : "\\b8\\b"}]}}}

第一个问题是&#34; $ regex&#34; &#34; $ in&#34;中不允许这样做查询。第二个问题是包含正则表达式的引号。我也试过传递字符串列表,但也没有成功。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,终于找到了以下解决方案。

Query query = new Query();
query.addCriteria(Criteria.where("key").regex(searchString));

无需使用$ in。 $ regex可以在字符串以及字符串列表中搜索。要搜索不区分大小写的子字符串,请添加选项“ i”。