创建带排序规则的集合
排序规则允许您为字符串比较指定特定于语言的规则,例如字母大小写和重音符号规则。
步骤
4
选择locale 的值。
您需要从 MongoDB 支持的语言中选择 locale(区域设置)。
所有其他排序规则选项参数都是可选的。有关字段的描述,请参阅排序规则。
限制与约束
当参数 numericOrdering
设置为 true
时,存在以下限制:
在比较中,仅考虑数字的连续非负整数子字符串。
numericOrdering
不支持:+
-
指数
只有数字或十进制数字 (Nd) 类别中的 Unicode 代码点才被视为数字。
如果数字长度超过 254 个字符,则超出的字符将被视为单独的数字。
例子
请考虑一个具有以下字符串数字和十进制值的集合:
[ { "n": "1" }, { "n": "2" }, { "n": "-2.1" }, { "n": "2.0" }, { "n": "2.20" }, { "n": "10"}, { "n": "20" }, { "n": "20.1" }, { "n": "-10" }, { "n": "3" } ]
以下 find 查询使用包含 numericOrdering
参数的排序规则文档:
db.c.find( { }, { _id: 0 } ).sort( { n: 1 } ).collation( { locale: 'en_US', numericOrdering: true } )
有关在Compass中查询文档的更多信息,请参阅查询数据。
操作返回以下结果:
[ { "n": "-2.1" }, { "n": "-10" }, { "n": "1" }, { "n": "2" }, { "n": "2.0" } { "n": "2.20" }, { "n": "3" }, { "n": "10" }, { "n": "20" }, {"n": "20.1" } ]
numericOrdering: true
按升序对字符串值进行排序(类似于对数字值的排序)。两个负值
-2.1
和-10
没有按照预期的排序顺序进行排序,因为它们包含不支持的-
字符。