Spring MongoTemplate - 在集合中通过正则表达式查找
Spring MongoTemplate - find by regex in collection
说我在 mongo 文档中有一个多值字段:
public class MongoEntity{
private List<String> field;
}
在该字段中查询正则表达式的正确 criteria 是什么?
我试过了
Criteria.where(searchText).regex(searchText).in("field");
但这会导致
org.springframework.data.mongodb.UncategorizedMongoDbException:
Can't canonicalize query: BadValue unknown top level operator: $in;
nested exception is com.mongodb.MongoException: Can't canonicalize query: BadValue unknown top level operator: $in
所以经过多次试验和错误,事实证明它比想象的更简单(虽然在我看来有点违反直觉):
Criteria.where("field").regex(searchText);
这是有效的
List<Pattern> regs = new ArrayList<Pattern>()
regs.add(Pattern.compile(regex, Pattern.CASE_INSENSITIVE))
Criteria.where("tags").regex(regs)
说我在 mongo 文档中有一个多值字段:
public class MongoEntity{
private List<String> field;
}
在该字段中查询正则表达式的正确 criteria 是什么?
我试过了
Criteria.where(searchText).regex(searchText).in("field");
但这会导致
org.springframework.data.mongodb.UncategorizedMongoDbException:
Can't canonicalize query: BadValue unknown top level operator: $in;
nested exception is com.mongodb.MongoException: Can't canonicalize query: BadValue unknown top level operator: $in
所以经过多次试验和错误,事实证明它比想象的更简单(虽然在我看来有点违反直觉):
Criteria.where("field").regex(searchText);
这是有效的
List<Pattern> regs = new ArrayList<Pattern>()
regs.add(Pattern.compile(regex, Pattern.CASE_INSENSITIVE))
Criteria.where("tags").regex(regs)