You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:41:18