微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MongoDB使用正则表达式查询字符串数组并查找文档

如何解决MongoDB使用正则表达式查询字符串数组并查找文档

我有一个ORDERS集合,就像:

_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
  }
})

Playground

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。