我正在尝试在 mongo+java 中使用 $regex
编写 $in
查询。它也不适用于 mongo shell。我的意思是我没有得到任何结果,但也没有查询解析错误。
这是我在 collection.find(finalQuery)
{"$and": [
{"$or": [
{"country": "united states"}
]},
{"businesses": {
"$in": [
{"$regex": "^.*cardinal.*health.*$"},
{"$regex": "^.*the.*hartford.*$"}
]
}}
]}
上述查询的 Java 代码片段:
Set<Pattern> businesses = new HashSet<Pattern>();
for(String st: srchTerms) {
businesses.add(Pattern.compile("^"+st.trim()+"$"));
}
srchTermQuery.append("businesses", new BasicDBObject("$in", businesses));
但是,以下查询在 mongo shell 中有效,但我不知道如何将其写入 java:
{"registering_organization": {
"$in": [
/^.*cardinal.*health.*$/,
/^.*the.*hartford.*$/
]
}}
如果我们尝试将正则表达式定义为字符串,Java 代码会在正则表达式周围添加双引号。
最佳答案
您看到的行为可能是一个错误,但是作为替代方案,您可以像这样编写查询
Pattern pattern = Pattern.compile("(^aaa$)|(^bbb$)");
srchTermQuery.append("businesses", pattern);
不漂亮,但它似乎可以解决问题
关于java - mongodb java $in 使用 $regex 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17984750/