$strcasecmp(不区分大小写比较)
最后更新:2026-10-09
$strcasecmp(不区分大小写比较)
$strcasecmp 对两个字符串做不区分大小写的比较,返回 -1、0 或 1,用于排序、分组或条件判断。它只处理字符串,其他类型会报错。注意它比较的是码点顺序而非自然语言排序规则,中文按 Unicode 码点排序,与拼音或字典序可能不同。任一参数为 null 时返回 null。返回值可直接用于 $cond 等分支逻辑做大小写不敏感匹配。
| 分类 | 字符串 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $strcasecmp: [ <字符串表达式1>, <字符串表达式2> ] }
⚙️ 参数
| 字符串1 | 必填,参与比较的第一个字符串表达式。 |
|---|---|
| 字符串2 | 必填,参与比较的第二个字符串表达式。 |
返回值:比较结果:-1、0 或 1;任一参数为 null 时返回 null。
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $strcasecmp:与 alice 忽略大小写比较
db.users.aggregate([
{ $project: { cmp: { $strcasecmp: [ '$name', 'alice' ] } } }
])
运行结果:
{ "_id": 1, "cmp": 0 }
{ "_id": 2, "cmp": 1 }
📌 注意事项
- 不区分大小写:'ALICE' 与 'alice' 比较结果为 0
- 非字符串输入会报错,可先用 $toString 转换
- 返回值与排序方向一致,可直接用于排序辅助字段
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q返回 0 表示什么?
A两个字符串忽略大小写后相等。
Q能做中文比较吗?
A可以,但按 Unicode 码点比较,不是拼音或字典序。
Q和 $cmp 有什么区别?
A$cmp 区分大小写按二进制比较,$strcasecmp 忽略大小写。