文档菜单
文档首页
/
MongoDB 数据库工具
/

mongoexport 示例

本页内容

  • 以 CSV 格式导出
  • 以 JSON 格式导出
  • 从运行身份验证的远程主机导出
  • 导出查询结果
  • 使用 AWS IAM 凭据连接到 MongoDB Atlas 集群
  • 了解更多

本页展示了以下示例mongoexport.

从系统命令行运行 mongoexport,而不是从mongo 命令行。

以下示例中,mongoexportusers 数据库的 contacts 集合中以 CSV 格式导出数据到文件 /opt/backups/contacts.csv

mongoexport 连接到的 mongod 实例正在本机 27017 端口上运行。

当以 CSV 格式导出时,必须指定要导出的文档中的字段。该操作指定了 nameaddress 字段以导出。

mongoexport --db=users --collection=contacts --type=csv --fields=name,address --out=/opt/backups/contacts.csv

输出将类似于

name, address
Sophie Monroe, 123 Example Road
Charles Yu, 345 Sample Street

仅对CSV导出,您还可以在包含要导出字段行分隔列表的文件中指定字段。文件必须每行只有一个字段。

例如,您可以在文件 fields.txt 中指定 nameaddress 字段

name
address

然后,使用--fieldFile 选项,指定通过文件导出的字段

mongoexport --db=users --collection=contacts --type=csv --fieldFile=fields.txt --out=/opt/backups/contacts.csv

可以使用 --noHeaderLine 选项在CSV导出中排除字段名称。以下示例导出 users 数据库中 contacts 集合的 nameaddress 字段,并使用 --noHeaderLine 来抑制输出字段名称作为第一行

mongoexport --db=users --collection=contacts --type=csv --fields=name,address --noHeaderLine --out=/opt/backups/contacts.csv

CSV输出将类似于

Sophie Monroe, 123 Example Road
Charles Yu, 345 Sample Street

以下示例从运行在本机端口号27017的MongoDB实例中导出contacts集合。此操作将导出写入到contacts.json文件中,该文件以JSON格式。

mongoexport --db=sales --collection=contacts --out=contacts.json

以下示例从需要认证的远程MongoDB实例中导出marketing数据库中的contacts集合。

指定

提示

省略--password选项,使mongoexport提示输入密码

mongoexport --host=mongodb1.example.net --port=27017 --username=someUser --authenticationDatabase=admin --collection=contacts --db=marketing --out=mdb1-examplenet.json

或者,您可以使用--uri选项来指定主机、端口、用户名、认证数据库和数据库名。

提示

在URI字符串中省略密码,使mongoexport提示输入密码

mongoexport --uri='mongodb://someUser@mongodb0.example.com:27017/marketing?authsource=admin' --collection=contacts --out=mdb1-examplenet.json

您可以通过使用 --query 选项提供查询过滤器来导出查询结果,并使用 "--db" 选项将结果限制到单个数据库。

例如,此命令返回 sales 数据库中 contacts 集合中所有包含名为 dept 字段且其值等于 "ABC" 以及字段 date 大于或等于 ISODate("2018-01-01")(使用 日期的标准格式 { "$date": "YYYY-MM-DDTHH:mm:ss.mmm"})的文档

mongoexport --db=sales --collection=contacts --query='{"dept": "ABC", date: { $gte: { "$date": "2018-01-01T00:00:00.000Z" } }}'

您必须用单引号('{ ... }')将查询文档括起来,以确保它不会与您的shell环境交互。

版本100.1.0.

要连接到已配置为支持通过 MongoDB Atlas 集群,该集群通过 AWS IAM 凭据 进行身份验证的集群,请为 mongoexport 提供一个类似以下 连接字符串

mongoexport 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>

以这种方式使用AWS IAM凭据连接到Atlas将使用MONGODB-AWS 认证机制$external authSource,如下例所示。

如果使用AWS会话令牌,也需提供AWS_SESSION_TOKEN authMechanismProperties值,如下所示

mongoexport 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>' <other options>

注意

如果AWS访问密钥ID、秘密访问密钥或会话令牌包含以下字符

: / ? # [ ] @

这些字符必须使用百分编码

或者,AWS访问密钥ID、秘密访问密钥和可选的会话令牌可以通过--username--password--awsSessionToken选项在连接字符串外部提供,如下所示

mongoexport 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' --username <aws access key id> --password <aws secret access key> --awsSessionToken <aws session token> <other options>

当作为命令行参数提供时,这三个选项不需要进行百分编码。

您还可以通过标准 AWS IAM 环境变量 在您的平台上设置这些凭据。当您使用 MONGODB-AWS 认证机制:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

如果设置了,则无需在连接字符串或通过其显式选项中指定这些凭据。

注意

如果您选择使用 AWS 环境变量来指定这些值,则不能与这些凭据的相应显式或连接字符串选项混合使用。或者使用访问密钥 ID 的环境变量 秘密访问密钥( 如果使用,则还包括会话令牌),或者 使用显式或连接字符串选项分别指定这些。

以下示例在 bash shell 中设置这些环境变量

export AWS_ACCESS_KEY_ID='<aws access key id>'
export AWS_SECRET_ACCESS_KEY='<aws secret access key>'
export AWS_SESSION_TOKEN='<aws session token>'

设置其他 shell 中环境变量的语法将不同。有关更多信息,请参阅您平台的相关文档。

您可以使用以下命令验证这些环境变量已设置

env | grep AWS

设置后,以下示例使用这些环境变量连接到 MongoDB Atlas 集群

mongoexport 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS' <other options>

返回

行为