Mongo正则表达式为“不匹配”或反向
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongo正则表达式为“不匹配”或反向相关的知识,希望对你有一定的参考价值。
我的mongo文件都包含一个名为templateName
的字段。有一些文件包含值:a_SystemDefaultTemplate
,b_SystemDefaultTemplate
,c_SystemDefaultTemplate
等。
我想find
那些templateName不以(或包含)SystemDefaultTemplate
结尾的文件
我知道可以使用$not
运算符完成,如下所示:
db.collection.find({templateName: {$not: /.*SystemDefaultTemplate$/}})
但是我如何使用正则表达式做同样的事情呢?
我尝试了以下但它似乎没有工作。
db.collection.find({templateName: {$regex: "^(.*SystemDefaultTemplate$)"}})
答案
尝试用负面向前看(意思是它不应该包含所提到的短语)
db.collection.find({templateName: {$regex: "^(?!SystemDefaultTemplate$)"}})
?!
是负面展望未来。以下是来自http://rexegg.com/regex-disambiguation.html#lookarounds的一些解释
“比赛后的负面前瞻: d +(?! d | dollar)样本匹配:100比100中的100说明: d +匹配100,然后负前瞻(?! d | dollar)断言在该位置字符串,紧接着的是既不是数字也不是字符“美元”
匹配前的否定前瞻:(?! d + dollar) d +样本匹配:100比100中的100说明:负前瞻(?! d + dollar)断言在字符串中的当前位置,后面的内容不是数字然后人物“美元”。如果断言成功,则引擎将数字与 d +匹配。“
以上是关于Mongo正则表达式为“不匹配”或反向的主要内容,如果未能解决你的问题,请参考以下文章