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