Mongo "not match" 的正则表达式或反向

Mongo regex for "not match" or inverse

我的 mongo 文档都包含一个名为 templateName 的字段。有一些文档包含该值:a_SystemDefaultTemplateb_SystemDefaultTemplatec_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| dollars) 示例匹配:100 比索中的 100 解释:\d+ 匹配 100,然后否定先行 (?!\d| dollars) 断言在字符串中的那个位置,紧随其后的既不是数字也不是字符“ dollars”

赛前负预测:(?!\d+ dollars)\d+ 示例匹配:100 比索中的 100 解释:否定先行 (?!\d+ dollars) 断言在字符串的当前位置,后面不是数字而是字符“ dollars”。如果断言成功,则引擎将数字与 \d+."

匹配