对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs 菜单

Bulk.find.collation()(mongosh方法)

Bulk.find.collation(<document>)

指定批量写入的排序规则。 附加到Bulk.find()方法,为查找操作指定排序规则。

Bulk.find.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" 类似,但略有不同。有关差异的详细信息,请参阅 ICU 自定义选项。

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。

有关详细信息,请参阅 ICU 排序规则:规范化。

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

注意

所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。

集合 restaurants 包含以下文档:

db.restaurants.insertMany( [
{ _id: 1, category: "café", status: "Open" },
{ _id: 2, category: "cafe", status: "open" },
{ _id: 3, category: "cafE", status: "open" }
] )

以下示例为collection初始化Bulk() restaurants操作构建器,并为查找筛选器指定排序规则。

var bulk = db.restaurants.initializeUnorderedBulkOp();
bulk.find(
{ category: "cafe" }
).collation(
{ locale: "fr", strength: 1 }
).update(
{ $set: { status: "closed", points: "0" } }
);
bulk.execute();
{
acknowledged: true,
insertedCount: 0,
insertedIds: {},
matchedCount: 3,
modifiedCount: 3,
deletedCount: 0,
upsertedCount: 0,
upsertedIds: {}
}

该操作指定带有 strength: 1 的排序规则,这意味着排序规则忽略大小写和字母变体之间的差异。因此,即使只有一个文档与过滤(cafe) 中指定的字符串完全匹配,该操作也会匹配并更新集合中的所有文档。

批量操作完成后,集合将包含以下文档:

[
{ _id: 1, category: 'café', status: 'closed', points: '0' },
{ _id: 2, category: 'cafe', status: 'closed', points: '0' },
{ _id: 3, category: 'cafE', status: 'closed', points: '0' }
]
给本页内容打分