mongoimport 行为、访问和使用
警告
数据导入和导出与 ($) 和 (.) 冲突
从 MongoDB 5.0 开始,文档字段名可以以美元字符($) 开头,并可以包含点字符(.)。然而,mongoimport 和 mongoexport 不支持使用这些字符的字段名。
MongoDB 扩展 JSON v2无法区分类型包装器和偶然与类型包装器同名的字段。不要在可能包含($)前缀键的相应 BSON 表示形式的上下文中使用扩展 JSON 格式。DBRef 机制是这一通用规则的例外。
使用(mongoimport)和(mongoexport)时,字段名中也有对使用(.)的限制。由于 CSV 文件使用(.)来表示数据层次结构,字段名中的(.)将被错误地解释为一个嵌套级别。
行为
类型保真度
如果您在使用()进行完整实例备份时需要保留所有丰富的 BSON 数据类型,请确保将(mongoexportExtended JSON v2.0 (Canonical mode))指定给()选项,如下所示--jsonFormat
mongoexport --jsonFormat=canonical --collection=<coll> <connection-string>
如果没有指定(),则(--jsonFormat)默认以(mongoexportExtended JSON v2.0 (Relaxed mode))输出数据。
mongoimport 在恢复时将自动使用在指定目标数据文件中找到的 JSON 格式。例如,如果目标数据导出文件是由带有 --jsonFormat=canonical 指定的 mongoexport 创建的,它将使用 Extended JSON v2.0 (Canonical mode)。
JSON 格式
mongoimport 默认要求导入数据采用 Extended JSON v2.0 (Canonical) 或 Extended JSON v2.0 (Relaxed) 格式。对于使用 Extended JSON v1.0 格式化的导入数据,请指定 --legacy 选项。
提示
通常,mongoexport 和 mongoimport 的版本应匹配。也就是说,要从 mongoexport 创建的数据导入,应使用相应的 mongoimport 版本。
文档顺序
默认情况下,mongoimport 可能以随机顺序插入文档。要在恢复过程中保留文档顺序,请使用 --maintainInsertionOrder。
编码
mongoimport 只支持UTF-8编码的数据文件。使用其他编码会导致错误。
FIPS
写入关注
如果您在 --writeConcern 选项和 --uri 连接字符串 选项中都指定了写入关注,则 --writeConcern 的值将覆盖URI字符串中指定的写入关注。
批次
mongoimport 使用最大批次大小为100,000来执行批量插入/更新操作。
所需权限
为了连接到使用 mongod 进行授权的 --auth 选项的 --username 和 --password 选项,连接的用户至少需要具有导入数据到数据库的 readWrite 角色。