collation()(设置排序规则)
最后更新:2026-10-09
collation()(设置排序规则)
collation()为查询设置字符串比较规则,语法为`db.users.find({ name: 'alice' }).collation({ locale: 'zh', strength: 2 })`。它决定大小写是否敏感、重音是否区分、语言排序习惯等。典型应用是不区分大小写的查询和本地化排序。注意:collation要求集合或索引在创建时指定了同样的collation才能用上索引。
| 分类 | 游标 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
db.<集合>.find(<条件>).collation(<排序规则>)
⚙️ 参数
| 排序规则 | locale必填,strength等可选,如{locale: 'en', strength: 2}。 |
|---|
返回值:应用排序规则后的游标(可继续链式调用)。
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// collation:不区分大小写查找alice
const user = db.users.find({ name: 'alice' })
.collation({ locale: 'en', strength: 2 })
.toArray()
user
运行结果:
[ { _id: ObjectId('64c8a1b20000000000000001'), name: 'Alice', age: 21 } ]
📌 注意事项
- strength 2表示忽略大小写,1表示只区分基本字符
- 要利用索引,索引创建时需指定相同collation
- 不同locale的排序结果可能不同,查询和建索引需保持一致
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Qcollation怎么实现忽略大小写查询?
A传入{locale: 'en', strength: 2}即可让大小写不同的字符串视为相等。
Qcollation会影响索引使用吗?
A会。查询的collation必须与索引创建时的collation一致,否则索引无法被使用。
Qcollation的locale参数怎么选?
A按业务语言选择,如中文用'zh'、英文用'en';不确定时可参考ICU的locale列表。