我正在出版物(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控制台中使用此类变体时,它会按预期工作。.