在pymongo中搜索时忽略一个特定或任何特殊字符



所以我的mongodb中有一些产品在下面列出

  1. 圣诞老人糖果
  2. 赫利甜
  3. 优质甜味

现在我得到的搜索是小写的,有时可能有特殊字符或没有特殊字符。那么,如何构建一个能够准确给出输出的查询呢?例如,如果用户在我的mongodb中输入了">quality-sweet",那么它应该与">quality-speetERLEYS SWEET",那么它应该匹配">HERLEYS SWEET

db.product.find({"Product":re.compile('^' + re.escape(pr) + '$',re.IGNORECASE)})

我有上面的查询,它可以使用大写或小写,但如果用户正在搜索类似"herleys-sweet"的内容,那么它就不起作用。

您可以使用re.sub()函数将特殊字符替换为其他字符。

你可以有这样的东西:

db.product.find({"Product":re.compile('^' + re.sub('[<list of special characters>]', '<string to replace with>', pr) + '$',re.IGNORECASE)})

例如:

  • 创建特殊字符列表:[-_~!\/^$%]

  • 选择用什么来替换特殊字符。可以是空间' '或任何.*

然后,你会有:

db.product.find({"Product":re.compile('^' + re.sub('[-_~!\/^$%]', '.*', pr) + '$',re.IGNORECASE)})

最新更新