我的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 +匹配。“