这个问题实际上是对追随者的延伸。
Ignore special characters before match conditions
我正在使用mongodb聚合来从表中查找某些产品。以下是我需要改进的查询部分
{
$match : { "name" : { $regex : "kdf8210"} }
}
现在,它确实匹配任何包含单词“kdf8210”的产品名称..但我需要它以匹配以下内容。
kdf.8210, kdf-8210, kdf.82-10
基本匹配应忽略其间的任何特殊字符。
我刚刚了解到$where
不能用作聚合管道的一部分,因此引用问题的答案没有多大帮助。
答案 0 :(得分:3)
您可以使用以下内容:
^k[.-]?d[.-]?f[.-]?8[.-]?2[.-]?1[.-]?0$
.
和-
插入任何位置(开头或尾端除外)。 [.-]
如果您没有尝试匹配整个字符串,请删除^
和$
个锚点。
^
锚点断言我们位于字符串的开头$
锚点断言我们位于字符串的末尾请参阅demo