Go语言mgo框架下如何实现带strength的大小写不敏感名称查询
在mgo中实现带Strength参数的大小写不敏感查询
要实现和你给出的MongoDB命令等效的大小写不敏感查询,推荐使用维护中的github.com/globalsign/mgo分支(该分支支持较新的MongoDB特性),可以通过Query.Collation()方法配置排序规则,具体实现如下:
核心实现方案
通过mgo的Collation结构体定义排序规则参数,将其绑定到查询语句上,让$in查询遵循指定的大小写忽略规则。
修改后的完整代码示例
import ( "gopkg.in/mgo.v2" "gopkg.in/mgo.v2/bson" ) // 省略MongoDB连接初始化、集合c获取的代码... // 定义排序规则:西班牙语 locale,strength=1 忽略大小写及重音 collation := &mgo.Collation{ Locale: "es", Strength: 1, } err = c.Find(bson.M{ "name": bson.M{ "$in": names, }, }).Collation(collation).All(&res)
参数说明
Locale: "es":指定使用西班牙语的排序规则,适配包含重音字符(如í)的场景Strength: 1:设置排序强度为初级(Primary Level),该级别会忽略大小写、重音及其他变音符号,仅比较字符的基本形态,完全匹配你需要的大小写不敏感查询需求
注意事项
请确保使用的mgo版本支持Collation特性,老版本的labix/mgo已停止维护,建议切换到github.com/globalsign/mgo分支以获得完整功能支持。
内容的提问来源于stack exchange,提问作者Juanchi
相关产品推荐
相关产品推荐

