Mongo "not match" 的正则表达式或反向
Mongo regex for "not match" or inverse
我的 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| dollars)
示例匹配:100 比索中的 100
解释:\d+ 匹配 100,然后否定先行 (?!\d| dollars) 断言在字符串中的那个位置,紧随其后的既不是数字也不是字符“ dollars”
赛前负预测:(?!\d+ dollars)\d+
示例匹配:100 比索中的 100
解释:否定先行 (?!\d+ dollars) 断言在字符串的当前位置,后面不是数字而是字符“ dollars”。如果断言成功,则引擎将数字与 \d+."
匹配
我的 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| dollars) 示例匹配:100 比索中的 100 解释:\d+ 匹配 100,然后否定先行 (?!\d| dollars) 断言在字符串中的那个位置,紧随其后的既不是数字也不是字符“ dollars”
赛前负预测:(?!\d+ dollars)\d+ 示例匹配:100 比索中的 100 解释:否定先行 (?!\d+ dollars) 断言在字符串的当前位置,后面不是数字而是字符“ dollars”。如果断言成功,则引擎将数字与 \d+."
匹配