Node.js环境MongoDB多字段OR模糊查询语句问题排查咨询
MongoDB 查询语句排查结果
你写的这条查询逻辑是通顺的,功能完全可以实现预期效果:只要headers、api_data、ip_address、tarih_2四个字段里任意一个包含94.54.232.96这个字符串的文档,都会被检索出来,你后续验证没有问题是符合预期的。
如果有需要的话还可以做几处不影响功能的简化优化:
- 外层的
$and可以直接去掉,MongoDB默认对顶层的多个查询条件执行$and逻辑,你当前整个查询只有一个$or条件,外层包$and没有实际作用,简化后更简洁 - 正则表达式前后的
.*可以省略,$regex默认只要匹配字段内容的任意子串就会命中,直接写"$regex": "94.54.232.96"和你原来的写法效果完全一致 - 如果
ip_address字段存储的是独立的IP字符串、不需要模糊匹配的话,建议直接用等值查询{"ip_address": "94.54.232.96"},查询性能会比正则查询高很多
你原本的查询写法如下:
{ "$and":[ { "$or":[ { "headers":{ "$regex":".*94.54.232.96.*" } }, { "api_data":{ "$regex":".*94.54.232.96.*" } }, { "ip_address":{ "$regex":".*94.54.232.96.*" } }, { "tarih_2":{ "$regex":".*94.54.232.96.*" } } ] } ] }
内容的提问来源于stack exchange,提问作者developernode
相关产品推荐
相关产品推荐

