SpringData正则表达式没有按预期工作

时间:2017-05-13 18:18:34

标签: regex mongodb spring-data-mongodb

使用原生查询

{
  $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))
            )
        )
    )
);

1 个答案:

答案 0 :(得分:0)

您是{或$or运算符的$或每个条件。 orOperator列出了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)
    )
)