首页 > 解决方案 > 可能不存在的字段上的流星正则表达式

问题描述

我正在出版物中准备这样的查询(Meteor.pulish)

let regex = new RegExp( search, 'i' );
query = {
    $and: [
      {someCondtion: true},
      {$or: [

        { name: regex },
        { surname: regex },
        { email: regex }

      ]}
    ]
  };
return Something.find(query);

这按预期工作。

现在我添加了可以被同一个正则表达式匹配的字段,唯一的区别是这个字段可能存在也可能不存在于所有文档中:

query = {
    $and: [
      {someCondtion: true},
      {$or: [

        { name: regex },
        { surname: regex },
        { email: regex },
        { maybeField: regex}            
      ]}
    ]
  };

最后一个条件被忽略,我尝试了以下各种组合无济于事:

{ maybeField: {$exists: true, $eq: regex}} 

或者:

{$and:[
     {maybeField:{$exists:true}}.
     {maybeField: regex}
}

最糟糕的是,当我在 mongo 控制台中使用此类变体时,它按预期工作..!!

标签: mongodbmeteorpublish-subscribe

解决方案


推荐阅读