小编Chr*_*ozo的帖子

MongoDB:如何查找忽略区分大小写,重音和逻辑百分比的文档(%)

我想在我的mongodb数据库中搜索一个集合.在我的收藏中,我有"name"字段的文档可以是以下值:

[i]"PalácioGuanabara","PaláciodaCidade","FestaPalácio"等.

当用户键入"pala"或"palá"或"Pala"或"PalÁ"之类的搜索时,[i]中的所有这些都必须构建结果集.

我发现在MongoDB中我可以在搜索中使用正则表达式,例如:

{ "name": { $regex: new Regex(".*pala.*", "i") } }
Run Code Online (Sandbox Code Playgroud)

好的,这种方法不区分大小写,并使用SQL中的百分比逻辑("%pala%").但是,它不会忽略数据库中寄存器的重音.

我找到了另一个使用$ text索引的替代方法:https://docs.mongodb.org/manual/core/index-text/

这种方法可以忽略区分大小写和重音.但"搜索"不接受正则表达式,因此我无法搜索"%pala%"之类的内容.

总结一下,我想在MongoDB中进行以下SQL查询:

select * from collection where remove_accents(upper(name)) like '%Pala%'
Run Code Online (Sandbox Code Playgroud)

此查询返回的结果名称为"palácio","palacio","PaláCiô"等.

querying case-insensitive mongoose mongodb mongodb-query

5
推荐指数
3
解决办法
8877
查看次数