Mongo搜索:$或对象似乎像$和

时间:2016-03-02 19:37:17

标签: regex mongodb

我有两个字段 - 我的mongo集合中的firstname和lastname,我试图从一个'name'文本框中搜索'$或'。搜索结果如下:

{
  "$or": [
    {
      "firstname": {
        "$regex": ".*Za"
      },
      "lastname": {
        "$regex": ".*Za"
      }
    }
  ]
}

如果我仅使用firstname或lastname值(即注释掉firstname或lastname对象),则搜索按预期工作。

但是,这只是匹配名称,其中firstname和lastname都包含正则表达式匹配。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

看起来你在第一个/最后一个名字字段周围有额外的花括号。现在写的方式,你的$或子句是:

(($ regex AND $ regex)OR null)。

试试这个:

{
  "$or": [
      {
        "firstname": {
          "$regex": ".*Za"
        }
      },
      {
        "lastname": {
          "$regex": ".*Za"
         }
      }
  ]
}