Art*_*asJ 6 java spring mongodb spring-data
我发现了MongoDb功能,允许使用$ in查找正则表列表中的元素.例:
db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )
Run Code Online (Sandbox Code Playgroud)
当直接键入一些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));
Run Code Online (Sandbox Code Playgroud)
它没有找到任何东西,因为查询看起来像这样:
{"key" : { "$in" : [ { "$regex" : "\\b5\\b"} , { "$regex" : "\\b8\\b"}]}}}
Run Code Online (Sandbox Code Playgroud)
第一个问题是"$ in"查询中不允许使用"$ regex".第二个问题是包含正则表达式的引号.我也试过传递字符串列表,但也没有成功.
我错过了什么吗?
我遇到了同样的问题,最后找到了以下解决方案。
Query query = new Query();
query.addCriteria(Criteria.where("key").regex(searchString));
Run Code Online (Sandbox Code Playgroud)
不需要使用$in。$regex 可以在字符串中搜索,也可以在字符串列表中搜索。要搜索不区分大小写的子字符串,请添加选项“i”。
| 归档时间: |
|
| 查看次数: |
1024 次 |
| 最近记录: |