不匹配正则表达式的电子邮件

时间:2017-07-26 00:31:01

标签: regex mongodb email

不确定我是否正确行事。

var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

db.test.find({ "Email" : { $regex : re}}).count()

这将返回我期望的500个文档计数...但是在集合中的1000个文档中,有意地有500个INVALID电子邮件地址。是的,我可以做数学,但实际上我最终想要检索所有的坏地址。怎么样?

db.test.find({ "Email" : {$not:{ $regex : re}}})

给了我一个错误,我希望在结果游标中有500个文档

Error: error: {
    "ok" : 0,
    "errmsg" : "$not cannot have a regex",
    "code" : 2,
    "codeName" : "BadValue"
}

当然,文档似乎支持$ regex不支持作为$ not的一部分的想法。 “re”变量的语法已经非常复杂。

我必须在本机mongo / javascript中查询哪些文档集合,其电子邮件元素不是基于复杂正则表达式的有效电子邮件地址?

mongo相当新... ...错误地丢失了sql server ...但愿意并热心为客户提供这个解决方案,以解决它将为这个项目提供的许多伟大的事情。

感谢您(所有)可能提供的任何见解。

麦克

1 个答案:

答案 0 :(得分:1)

您的查询已关闭,根据文档,您可以将正则表达式放入$not表达式。

这将返回与您的正则表达式不匹配的所有电子邮件地址。

db.test.find( { Email: { $not: re } } )

https://docs.mongodb.com/manual/reference/operator/query/not/

相关问题