Regex SpringData正则表达式未按预期工作
工作本机查询Regex SpringData正则表达式未按预期工作,regex,mongodb,spring-data-mongodb,Regex,Mongodb,Spring Data Mongodb,工作本机查询 { $match: { $and : [ {userType:"200"}, { $or: [ {login : /infosys/}, {email : /infosys/}, {firstName : /infosys/}, {lastName : /infosys/} ] } ] } }
{
$match: {
$and : [
{userType:"200"},
{
$or: [
{login : /infosys/},
{email : /infosys/},
{firstName : /infosys/},
{lastName : /infosys/}
]
}
]
}
}
SpringData API未按预期工作:
match(
Criteria.where("userType").is(userType).orOperator(
Criteria.where("login").regex(searchTxt).orOperator(
Criteria.where("email").regex(searchTxt).orOperator(
Criteria.where("firstName").regex(searchTxt).orOperator(Criteria.where("lastName").regex(searchTxt))
)
)
)
);
使用
$或
运算符,您可以输入$or每个条件<代码>或操作员获取一个crtieria列表
下面是本机查询的等效项
match
(
Criteria.where("userType").is(userType)
.orOperator(
Criteria.where("login").regex(searchTxt),
Criteria.where("email").regex(searchTxt),
Criteria.where("firstName").regex(searchTxt),
Criteria.where("lastName").regex(searchTxt)
)
)
您将传递什么作为此正则表达式的搜索文本
/infosys/
或infosys
以下本机查询获取一个记录工作查询{$match:{$and:[{userType:“200”},{$or:[{login:/suresh/},{email:/suresh/},{firstName:/suresh/},{lastName:/suresh/}},{,等效Spring数据-没有匹配的记录(Criteria.where(“userType”).is(userType).orOperator(Criteria.where(“login”).regex(searchTxt)、Criteria.where(“email”).regex(searchTxt)、Criteria.where(“firstName”).regex(searchTxt),Criteria.where(“lastName”).regex(searchTxt))),您的searchTxt值是多少?您能显示本机查询返回的文档吗?对于本机和Springdata查询,我的searchTxt都是“suresh”。以下是本机查询返回的{“_id”:“259490257”,“login”:“ms349j”,“firstName”:“Malathy”,“lastName”:“Suresh”,“createdOn”:“2017-04-12 00:30:46.271”,“email”:“Malathy”。suresh@abc.com,“deactivateFlag”:false,“createdby”:[{“name”:“Ravichandran”}]}我在您的文档中没有看到任何用户类型。这可能就是spring查询无法工作的原因。如果我没有在匹配阶段中包含userType,那么查询对我来说是有效的。