使用Mongoose,尝试查询所有不包含子字符串的记录。
我有一个用户架构,带有一个电子邮件字段。我想获取电子邮件字段不包含@ testschool.edu的所有用户文档。 Reg Ex似乎无效。
试过这个:
User.count()
.where({email: { "$regex": '^((?!testschoo.edu).)*$', "$options": "i" }})
答案 0 :(得分:0)
这实际上有效......只是没有正确的字符串。谢谢你指出 - Neil Lunn
答案 1 :(得分:0)
另一种可能的解决方案是使用逻辑查询运算符.mjs
:
$not
如果您想将多个子字符串模式“列入黑名单”,则可以使用逻辑查询运算符return User.find(
{ email: {$not: /.*testschool\.edu.*/} },
{}).fetch()
,该运算符也支持RegEx(官方文档未明确提及):
$nor
当然,在这种特殊情况下,我们知道在子字符串之后不应该有任何内容,因此我们可以更精确地搜索return User.find(
{ $nor: [{email: /.*testschool\.edu.*/}, {email: /.*catholicschool\.edu.*/] },
{}).fetch()
有关问题解决方案为何有效的详细说明,请参见此excellent answer。