定义
cursor.collation(<collation document>)重要
mongosh 方法
本页面提供
mongosh方法的相关信息。这不是 特定于语言的驱动程序(例如 Node.js)的文档。如需了解 MongoDB API 驱动程序,请参阅特定语言的 MongoDB 驱动程序文档。
指定 返回的游标的
db.collection.find()排序规则 。要使用,请附加到db.collection.find()。cursor.collation()接受以下排序规则文档:{ locale: <string>, caseLevel: <boolean>, caseFirst: <string>, strength: <int>, numericOrdering: <boolean>, alternate: <string>, maxVariable: <string>, backwards: <boolean> } 指定排序规则时,
locale字段为必填字段;所有其他排序规则字段均为可选字段。有关字段的说明,请参阅排序规则文档。字段类型说明locale字符串
ICU 语言环境。有关支持的语言环境列表,请参阅支持的语言和语言环境。
要指定简单的二进制比较,请指定
"simple"的locale值。strength整型
可选。要执行的比较级别。对应于 ICU 比较级别。可能的值为:
1:主要比较级别。排序规则仅对基本字符进行比较,而忽略其他差异,例如变音符号和大小写。2:次要比较级别。排序规则只对从节点(secondary node from replica set)差异进行比较,例如变音符号。也就是说,排序规则对基本字符(主节点 (primary node in the replica set)差异)和变音符号(从节点(secondary node from replica set)差异)进行比较。基本字符之间的差异优先于从节点(secondary node from replica set)差异。3:第三级比较。排序规则最多执行第三级差异的比较,例如大小写和字母变体。也就是说,排序规则对基本字符(主节点 (primary node in the replica set)差异)、变音符号(从节点(secondary node from replica set)差异)以及大小写和变体(第三次差异)执行比较。基本字符之间的差异优先于从节点(secondary node from replica set)差异,二级差异优先于三级差异。这是默认级别。
4:第四级。仅限于在 1-3 级别忽略标点符号时考虑标点符号的特定使用案例,或仅限于处理日文文本。5:相同级别。仅限于仲裁开关的特定使用案例。
有关详细信息,请参阅 ICU 排序规则:比较级别。
caseLevel布尔
可选。此标志用于确定是否在
strength级别为1或2时进行大小写比较。如果
true,则包括大小写比较;即当与
strength:1一起使用时,排序规则会比较基本字符和大小写。当与
strength:2一起使用时,排序规则会比较基本字符、变音符号(以及可能的其他次要差异)和大小写。
如果其值为
false,则在1级别或2级别不不包括大小写比较。默认值为false。有关更多信息,请参阅 ICU 排序规则:大小写级别。
caseFirst字符串
可选。此字段用于确定第三级比较期间大小写差异的排序顺序。
可能的值为:
"upper":大写字母排序在小写字母之前。"lower":小写字母排序在大写字母之前。"off":默认值。与"lower"类似,但略有不同。有关差异的详细信息,请参阅 https://unicode-org.github.io/icu/userguide/strings/properties.html#customization。
numericOrdering布尔
可选。此标志用于确定是将数字字符串作为数字还是字符串来比较。
如果为
true,则作为数字进行比较;即"10"大于"2"。如果为
false,则作为字符串进行比较;即"10"小于"2"。默认值为
false。alternate字符串
可选。此字段用于确定排序规则是否应将空格和标点符号视为基本字符来比较。
可能的值为:
"non-ignorable":空格和标点符号被视为基本字符。"shifted":空格和标点符号不被视为基本字符,仅在强度级别大于 3 时才能区分。
有关更多信息,请参阅 ICU 排序规则:比较级别。
默认值为
"non-ignorable"。maxVariable字符串
可选。此字段用于确定在
alternate: "shifted"时哪些字符会被视为可忽略的字段。如果alternate: "non-ignorable",则无效可能的值为:
"punct":空格和标点符号都是“可忽略的”,即不被视为基本字符。"space":空格是“可忽略的”,即不被视为基本字符。
backwards布尔
可选。此标志用于确定带有变音符号的字符串是否从字符串后面进行排序,例如某些法语词典排序。
如果
true,则从后往前进行比较。如果
false,则从前往后进行比较。默认值为
false。normalization布尔
可选。此标志用于确定是否检查文本是否需要规范化并执行规范化。通常,大多数文本都不需要这种规范化处理。
如果
true,则检查是否需要完全规范化并执行规范化以比较文本。如果
false,则不进行检查。默认值为
false。有关详细信息,请参阅 https://unicode-org.github.io/icu/userguide/collation/concepts.html#normalization。
兼容性
此方法可用于以下环境中托管的部署:
- MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
示例
请考虑包含以下文档的集合 foo:
{ "_id" : 1, "x" : "a" } { "_id" : 2, "x" : "A" } { "_id" : 3, "x" : "á" }
以下操作指定查询筛选器x: "a" 。 该操作还包括具有locale: "en_US" (美国英语区域设置)和strength: 1 (仅比较基本字符;即忽略大小写和变音符号)的排序规则选项:
db.foo.find( { x: "a" } ).collation( { locale: "en_US", strength: 1 } )
该操作将返回以下文档:
{ "_id" : 1, "x" : "a" } { "_id" : 2, "x" : "A" } { "_id" : 3, "x" : "á" }
如果不指定排序规则,即db.collection.find( { x: "a" } ) ,查询将仅匹配以下文档:
db.foo.find( { x: "a" } )
您可以将其他游标方法(例如cursor.sort()和cursor.count() )链接到cursor.collation() :
db.collection.find({...}).collation({...}).sort({...}); db.collection.find({...}).collation({...}).count();
注意
您不能为一个操作指定多个排序规则。例如,您不能为每个字段指定不同的排序规则,或者如果执行带排序的查找,则不能使用一种排序规则进行查找而另一种排序规则进行排序。