使用mongodb驱动程序如何不在$ regex查询中

时间:2015-03-21 20:48:19

标签: regex mongodb

从网上搜索我不确定这是否可行所以我想我会问你聪明的人。

我正在尝试允许网站免费范围的管理员用户执行更高级的搜索查询。 db是mongo。无论输入到搜索输入中的是什么,都会被放入{"$regex": "{user input}"}

我知道我可以使用$not运算符,但我想知道是否可以在$ regex字段中应用NOT。这样我就不必解析输入并填写$not,只需让$regex处理它。

这只适用于知道如何将正则表达式放入搜索输入的管理员,因此我不必担心简单用户的复杂性。

感谢您的帮助。

编辑: 此外,我后来想出了我真正意义上的$ not is $ ne。用户可以键入"someFieldName" $ne "someId"的内容,将{$ 1}}放入$ regex查询中以获取mongo并获取someFieldName没有“someId'”的所有文档的结果。

1 个答案:

答案 0 :(得分:2)

正则表达式没有$not - 类似运算符。

如果您想要返回一些不包含查询字符串的行/条目,您可以使用

"^(?:(?!" + $query_string + ").)*$"

以下是对^(?:(?!query).)*$正则表达式的口头描述,该说明将匹配不包含单词"查询"的行:

enter image description here

enforce PCRE flavor,您应该使用 $ regex 运算符并将模式作为字符串(将 [your_query_string] 替换为实际查询):

{ $regex: '^(?:(?![your_query_string]).)*$' }