如何解决MongoDB使用正则表达式查询字符串数组并查找文档
_id:5f8e7d8084378609b2dca93f
user_id:"5f8465a777b1814c588521e2"
price:96
city:"Mumbai City"
totalCost:96
_id:5f8e7d8084378609b2dca93f
user_id:"5f8465a777b1814c588521e2"
price:96
city:"Delhi"
totalCost:96
然后在我的API中,我接收到了数组形式的数据:
driverCity = ['Mumbai','Ahmednagar','Yavatmal','Warud','Umred']
现在,如何查询我的ORDERS集合,然后检查正则表达式中的ORDER.city
变量是driverCity
作为子字符串存在吗?这意味着,如果ORDER.city
中以及该数组中也存在“ mumbai”之类的子字符串,我希望得到该结果。
解决方法
如果要从MongoDb驱动程序查询Nodejs,则可以进行不区分大小写的正则表达式查询:
const driverCity = ['Mumbai','Ahmednagar','Yavatmal','Warud','Umred'];
db.collection("ORDERS").find({
city: new RegExp(driverCity.map(city => `(${city})`).join('|'),'i')
})
注意::mongodb(或实际上,在任何地方)中的正则表达式查询有点繁琐,可能会很慢且占用大量资源。我建议您将ORDERS集合中的city
键编入索引。
使用|
连接数组元素并创建一个字符串,使用$regex获得匹配的城市,
let driverCity = ['Mumbai','Umred'].join("|");
// "Mumbai|Ahmednagar|Yavatmal|Warud|Umred"
db.collection.find({
city: {
$regex: driverCity
}
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。