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,那么查询对我来说是有效的。