繁体   English   中英

Mongodb字符串匹配正则表达式

[英]Mongodb string match regex

我有几个mongodb文档,如下所示:

{
    ...
    ipAddress: "1.2.3.4"
},
{
    ...
    ipAddress: "1.2.3.44,1.2.5.7"
}

ipAddress是一个字符串字段,可以包含许多以逗号分隔的IP。 "1.2.3.4,1.3.5.7,2.4.6.8"等)

我想检索一个与特定IP匹配的mongo文档。 为此,我尝试以下查询:

collection.findOne({
    ipAddress: new RegExp (<<the_ip>>)
});

但是,在调试我的应用程序时,我意识到上面的查询匹配并找到任何具有the_ip东西,而不仅仅是确切的the_ip

例如。 如果我有两个IP为1.2.2.2和1.2.2.22的文档,并且我搜索regexp 1.2.2.2,我注意到它始终匹配并返回1.2.2.22。 我觉得这是预期的,因为从技术上讲,正则表达式正在做它的工作。

然而,这不是理想的结果。 如何进行完全准确的 IP匹配?

谢谢。

我想你需要做两件事:

  1. 将分隔符添加到IP地址
  2. 地址中的转义点

对于(1)做:

(^|,)<<the_ip>>(,|$)

这要求IP之前是字符串开头的( ^ )断言或逗号,并且该字符串末尾的后跟逗号或( $ )断言。

对于(2)用\\.替代点\\. 在IP字符串中。

"1.2.3.4".replace(/\./g, "\\.")

正则表达式中的点表示“任何字符但新行”,因此如果不替换它,则可能会意外匹配一些无效字符串(例如1a1a1a1 )。

演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM