如何将MongoDB查询结果导出到JSON文件
MongoDB 数据库工具包含一个名为 mongoexport 的命令行实用工具,支持将 MongoDB 数据导出为 CSV 或 JSON 文件。
您可以使用此用途执行的操作之一是导出查询结果。本文介绍如何使用 将 MongoDB 查询结果导出到 JSON 文件。mongoexport
语法
的语法是这样的:mongoexport
mongoexport --collection=<coll> <options> <connection-string>
您需要从系统的命令行(例如,新的终端或命令提示符窗口)运行命令。mongoexport
不要从命令行管理程序运行命令。mongoexport``mongo
例
以下示例代码将查询结果导出到 JSON 文件:
mongoexport --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json
这将导出查询数据库中调用的集合的查询。查询将导出到文件夹中调用的文件。pets``PetHotel``dogs.json``data/
如果该文件夹不存在,则会创建该文件夹。与文件相同。顺便说一下,这假设将文件写入指定位置没有权限问题。
在此示例中,我没有指定任何主机、端口、身份验证等,因此它从默认本地主机端口号上运行的 MongoDB 实例导出集合。27017
还可以使用该参数显式指定 JSON。默认值为 JSON,因此在导出为 JSON 时这是可选的。--type
您还可以包含一个参数来指定要导出的字段。默认情况下,它会在使用 JSON 时导出所有字段。但是,导出为 CSV 时,必须指定要导出的字段。--fields
下面是添加了这两个参数的上述示例的示例:
mongoexport --db=PetHotel --collection=pets --type=json --fields=_id,name,type,weight --query='{ "type": "Dog" }' --out=data/dogs.json
以下是我们在此处提供的参数的说明。
| 参数 | 描述 |
|---|---|
--db |
|
| 或 | |
-d |
指定要在其上运行 的数据库。在这种情况下,数据库称为 。 |
也可以使用 (而不是 ) 传递此参数。mongoexport``PetHotel``-d``--db |
|
--collection |
|
| 或 | |
-c |
指定要导出(或对其运行查询)的集合。在这种情况下,集合称为 。 |
也可以将此参数作为 (而不是 ) 传递。pets``-c``--collection |
|
--type |
指定导出的文件类型。在这种情况下,我们指定将其导出到 JSON 文件。鉴于 JSON 是默认值,则导出为 JSON 时此参数是可选的。json |
--fields |
指定要导出的字段。我们可以选择导出所有字段或仅导出部分字段。导出为 JSON 时,指定字段名称是可选的(这是导出为 CSV 时的一项要求)。 |
--query |
|
| 或 | |
-q |
指定要导出其结果的查询。这必须括在单引号中(这样它就不会与你的 shell 交互)。 |
也可以使用 传递此参数。-q |
|
--out |
指定导出的文件名及其位置。如果未指定文件名, 会将数据写入标准输出 ()。mongoexport``stdout |
检查导出的文件
让我们验证导出操作是否按预期工作。
首先,让我们针对原始集合运行查询。
use PetHotel
db.pets.find({ "type": "Dog" })
结果:
{ “_id” : 1, “name” : “Wag”, “type” : “Dog”, “weight” : 20 } { “_id” : 2, “name” : “Bark”, “type” : “Dog”, “weight” : 10 } { “_id” : 6, “name” : “Fetch”, “type” : “Dog”, “weight” : 17 } { “_id” : 7, “name” : “Jake”, “type” : “Dog”, “weight” : 30 }
因此,我们可以看到有 4 只狗,它们都具有我们在导出操作中指定的相同字段。
现在让我们打开导出的文件以查看其中的内容:dogs.json
{"_id":1.0,“name”:“Wag”,“type”:“Dog”,“weight”:20.0} {"_id":2.0,“name”:“Bark”,“type”:“Dog”,“weight”:10.0} {"_id":6.0,“name”:“Fetch”,“type”:“Dog”,“weight”:17.0} {"_id":7.0,“name”:“Jake”,“type”:“Dog”,“weight”:30.0}
All data is in the exported file as expected.
导出较少字段
如果需要,您可以使用参数指定较少的字段。--fields
例:
mongoexport --db=PetHotel --collection=pets --fields=name,weight --query='{ "type": "Dog" }' --out=data/dogs.json
生成的文件:
{"_id":1.0,“name”:“Wag”,“weight”:20.0} {"_id":2.0,“name”:“Bark”,“weight”:10.0} {"_id":6.0,“name”:“Fetch”,“weight”:17.0} {"_id":7.0,“name”:“Jake”,“weight”:30.0}
您会注意到该字段包含在导出的文件中,即使我没有明确将其包含在参数中。这是因为导出为 JSON 时始终包含该字段 - 即使您没有明确包含它。导出为 CSV 时并非如此。_id``--fields``_id
访问控制/身份验证
如果不使用 localhost,则可以使用该参数来指定主机和端口。还可以使用该参数指定用户名和密码。如果省略密码参数,系统将提示您输入密码参数。还有一个参数用于指定已在其中创建用户的身份验证数据库。--host``--port``--username``--password``--authenticationDatabase
例:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --query='{ "type": "Dog" }' --out=data/dogs.json
检查mongoexport
mongoexport是 MongoDB 数据库工具包的一部分。MongoDB数据库工具是一套用于使用MongoDB的命令行实用程序。
如果您不确定是否安装了MongoDB数据库工具/,请尝试在终端或命令提示符下运行以下命令进行检查:mongoexport
mongoexport --version
如果有,您应该会看到版本信息等。如果您没有它,您可以使用MongoDB网站上的安装说明将其安装到您的系统上。
在哪里运行命令?
不要忘记,您需要从系统的命令行(例如新的终端或命令提示符窗口)运行命令。mongoexport