从网上搜索我不确定这是否可行所以我想我会问你聪明的人。
我正在尝试允许网站免费范围的管理员用户执行更高级的搜索查询。 db是mongo。无论输入到搜索输入中的是什么,都会被放入{"$regex": "{user input}"}
。
我知道我可以使用$not
运算符,但我想知道是否可以在$ regex字段中应用NOT。这样我就不必解析输入并填写$not
,只需让$regex
处理它。
这只适用于知道如何将正则表达式放入搜索输入的管理员,因此我不必担心简单用户的复杂性。
感谢您的帮助。
编辑:
此外,我后来想出了我真正意义上的$ not is $ ne。用户可以键入"someFieldName" $ne "someId"
的内容,将{$ 1}}放入$ regex查询中以获取mongo并获取someFieldName
没有“someId'”的所有文档的结果。
答案 0 :(得分:2)
正则表达式没有$not
- 类似运算符。
如果您想要返回一些不包含查询字符串的行/条目,您可以使用
"^(?:(?!" + $query_string + ").)*$"
以下是对^(?:(?!query).)*$
正则表达式的口头描述,该说明将匹配不包含单词"查询"的行:
要enforce PCRE flavor,您应该使用 $ regex 运算符并将模式作为字符串(将 [your_query_string] 替换为实际查询):
{ $regex: '^(?:(?![your_query_string]).)*$' }