如何在带有2个不同键的正则表达式中使用mongo'$ or'运算符?

时间:2019-02-04 22:22:14

标签: javascript reactjs mongodb

在搜索栏上搜索项目列表 (带有名称和地址的项目)与mongo反应

这些键称为“名称”和“地址”

我希望搜索栏根据用户输入显示,可以是基于正则表达式的名称或地址

但是我只能让查询使用键之一,而不能全部使用

queryData['name'] = { $regex: searchField.replace(/[^a-zA-Z0-9-_@.]/g,''), $options: 'i' } // this lets me search through name array

当我将“名称”更改为地址时,它将使用地址数组进行搜索 如何同时使用姓名和地址?

我尝试做

queryData['$or'] = [
    { name: {regex: searchField.replace(...), $options: 'i' }},
    { address: {regex: searchField.replace(...),$options:'i'}}
]

但是上述方法不起作用,检查器上没有错误,我的语法关闭了吗?我还能尝试什么?预先感谢。

1 个答案:

答案 0 :(得分:0)

唯一的事情是,在您的语法中,您的正则表达式字符串前没有$。我在本地运行的MongoDB数据库上尝试了您的示例,只要您使用$ regex而不是regex,它就可以正常工作,所以(以我为例):

{$or: [{name: {regex: "Energy"}},{category: {regex: "Values"}}]}