对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

批量写入配置选项

以批处理模式向 MongoDB 写入数据时,可以配置以下属性。

注意

如果您使用 SparkConf 设置连接器的写入配置,请为每个属性添加前缀 spark.mongodb.write.

属性名称
说明

connection.uri

必需。
连接字符串配置密钥。

默认: mongodb://localhost:27017/

database

必需。
数据库名称配置。

collection

必需。
集合名称配置。

comment

要追加到写入操作的注释。注释出现在数据库分析器的输出中。

默认:

mongoClientFactory

MongoClientFactory 配置键。
您可以指定必须实现 com.mongodb.spark.sql.connector.connection.MongoClientFactory 接口的自定义实现。

默认值: com.mongodb.spark.sql.connector.connection.DefaultMongoClientFactory

convertJson

指定 Connector 是否解析 string 并将扩展 JSON 转换为 BSON。

此设置可接受以下值:

  • any:Connector 将所有 JSON 值转换为 BSON。

    • "{a: 1}" 变为 {a: 1}

    • "[1, 2, 3]" 变为 [1, 2, 3]

    • "true" 变为 true

    • "01234" 变为 1234

    • "{a:b:c}" 不变。

  • objectOrArrayOnly:Connector 仅将 JSON 对象和数组转换为 BSON。

    • "{a: 1}" 变为 {a: 1}

    • "[1, 2, 3]" 变为 [1, 2, 3]

    • "true" 不变。

    • "01234" 不变。

    • "{a:b:c}" 不变。

  • false:Connector 将所有值保留为字符串。

默认: false

idFieldList

指定用于分割集合数据的字段或字段列表。若要指定多个字段,请使用逗号分隔它们,如下例所示:

"fieldName1,fieldName2"

默认: _id

ignoreNullValues

当为 true 时,Connector 在写入时会忽略任何 null 值,包括数组和嵌套文档中的 null 值。

默认值: false

maxBatchSize

指定批处理操作中批处理的最大操作数。

默认: 512

operationType

指定要执行的写入操作类型。可以将其设置为下列其中一个值:

  • insert:插入数据。

  • replace:将与 idFieldList 值匹配的现有文档替换为新数据。如果不存在匹配项,则 upsertDocument 的值指示 Connector 是否插入新文档。

  • update:使用新数据更新与 idFieldList 值匹配的现有文档。如果不存在匹配项,则 upsertDocument 的值指示 Connector 是否插入新文档。


默认: replace

ordered

指定是否执行有序批量操作。

默认: true

upsertDocument

当为 true 时,如果不存在匹配项,替换和更新操作将插入数据。

对于时间序列集合,必须将 upsertDocument 设置为 false

默认: true

writeConcern.w

指定 w,这是一个写关注(write concern)选项,用于请求确认写入操作已传播到指定数量的 MongoDB 节点。

有关此选项的允许值列表,请参阅 MongoDB Server 手册中的“WriteConcern w 选项”。

默认值: Acknowledged

writeConcern.journal

指定 j,这是一个写关注(write concern)选项,用于请求确认:根据 w 选项指定的条件,数据确实已写入到磁盘上的日志中。您可以指定 truefalse

有关 j 值的更多信息,请参阅 MongoDB Server 手册中的WriteConcern j 选项

writeConcern.wTimeoutMS

指定 wTimeoutMS,这是一个写关注(write concern)选项,用于在写入操作超过指定的毫秒数时返回错误。如果使用此可选设置,则必须指定一个非负整数。

有关 wTimeoutMS 值的更多信息,请参阅 MongoDB Server 手册中的 WriteConcern wtimeout

truncateMode

指定在执行覆盖操作时如何截断集合。您可以将此选项设置为以下值之一:

  • TruncateMode.DROP默认。删除集合。

  • TruncateMode.TRUNCATE:删除集合中的所有条目,但保留索引、集合选项和任何分片配置。这比删除操作要慢。

ignoreDuplicatesOnInsert

当设置为 true 时,连接器在执行无序插入操作时会忽略重复键错误。要插入的数据必须包含 _id 字段值或 idFieldList 选项中指定的字段。

默认值: false

如果使用 SparkConf 指定了之前的任何设置,可以将其包含在 connection.uri 设置中,也可以单独列出。

以下代码示例显示如何将数据库、集合和 convertJson 设置指定为 connection.uri 设置的一部分:

spark.mongodb.write.connection.uri=mongodb://127.0.0.1/myDB.myCollection?convertJson=any

为了缩短 connection.uri 并使设置更易于阅读,您可以改为单独指定它们:

spark.mongodb.write.connection.uri=mongodb://127.0.0.1/
spark.mongodb.write.database=myDB
spark.mongodb.write.collection=myCollection
spark.mongodb.write.convertJson=any

重要

如果您在 connection.uri 及其自己的行中都指定了某个设置,则 connection.uri 设置优先。例如,在以下配置中,连接数据库为 foobar

spark.mongodb.write.connection.uri=mongodb://127.0.0.1/foobar
spark.mongodb.write.database=bar