mongoexport 行为、访问权限和使用情况
警告
数据导入和导出与 ($) 和 (.) 冲突
从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(规范模式)
FIPS
mongoexport
自动创建与 配置为使用 FIPS 模式 的mongod
/ 的符合mongos
FIPS 标准的连接。
读取偏好
默认, mongoexport
使用读取偏好(read preference)primary
。 要覆盖默认,您可以在 命令行选项或 --readPreference
中指定 读取偏好(read preference)--uri connection string
。
如果您在 URI string和--readPreference
中指定读取偏好(read preference),则--readPreference
值将覆盖 URI string中指定的读取偏好(read preference)。
必需的访问权限
mongoexport
需要对目标数据库具有读取访问权限。
确保连接用户至少具有目标数据库上的 read
角色。