gpt4 book ai didi

java - 带有 $in 和正则表达式列表的 Spring Data MongoDB 标准

转载 作者:行者123 更新时间:2023-12-01 11:20:16 25 4
gpt4 key购买 nike

我发现了 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"}]}}}

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

我错过了什么吗?

最佳答案

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

Query query = new Query();
query.addCriteria(Criteria.where("key").regex(searchString));
无需使用 $in。 $regex 既可以在字符串中搜索,也可以在字符串列表中搜索。要搜索不区分大小写的子字符串,请添加选项“i”。

关于java - 带有 $in 和正则表达式列表的 Spring Data MongoDB 标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38785349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com