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