本文将会介绍如何利用 mongoimport 工具将文件导入本地 MongoDB 数据库服务器,以及如何利用 mongoexport 工具将 MongoDB 中的数据导出到文件中。
MongoDB 提供了一系列数据库工具,包括:
MongoDB 4.4 版本开始,这些数据库工具不再随着服务器一起发布安装,而是使用单独的软件包。
首先,通过下载页面选择相应的版本、平台以及安装文件格式。
同时,我们还需要点击下载示例文件 movies.json。
mongoimport 工具可以将 JSON、CSV 以及 TSV 文件导入 MongoDB 服务器。
首先,在命令行中进入安装目录。Windows 平台默认为 C:\Program Files\MongoDB\Tools\100\bin。
cd "C:\Program Files\MongoDB\Tools\100\bin"
然后,执行 mongoimport 命令将 movies.json 文件导入 MongoDB 服务器:
mongoimport.exe D:\data\movies.json -d bookdb -c movies --drop
其中,-d 用于指定目标数据库,-c 用于指定目标集合,–drop 表示如何该集合已经存在则删除后再导入。
导入成功后会显示以下信息:
2023-03-30T11:49:43.954+0800 connected to: mongodb://localhost/
2023-03-30T11:49:44.028+0800 dropping: bookdb.movies
2023-03-30T11:49:45.298+0800 3201 document(s) imported successfully. 0 document(s) failed to import.
然后连接到 MongoDB 服务器并查询导入的 movies 集合:
db.movies.countDocuments()
3201
db.movies.findOne()
{
_id: ObjectId("642506d80e4683c5c14d7fa8"),
Title: "Let's Talk About Sex",
'US Gross': 373615,
'Worldwide Gross': 373615,
'US DVD Sales': null,
'Production Budget': 300000,
'Release Date': 'Sep 11 1998',
'MPAA Rating': null,
'Running Time min': null,
Distributor: 'Fine Line',
Source: null,
'Major Genre': 'Comedy',
'Creative Type': null,
Director: null,
'Rotten Tomatoes Rating': 13,
'IMDB Rating': null,
'IMDB Votes': null
}
mongoexport 工具可以将 MongoDB 数据库中的内容导出为 JSON 或者 CSV 文件。
以下命令用于将本地 27017 端口 MongoDB 数据库 bookdb 中的集合 movies 数据导出到 movies.json 文件:
mongoexport.exe --collection=movies --db=bookdb --out=movies.json
其中,–collection 用于指定要导出的集合,–db 指定了集合所在的数据库,–out 用于指定导出的文件路径和名称。
如果想要导出远程 MongoDB 实例中的数据,需要指定 --uri 连接字符串,例如:
mongoexport.exe --uri="mongodb://mongodb0.remote.server:27017/bookdb" --collection=movies --out=movies.json
另外,我们也可以通过 --host 以及 --port 参数指定服务器地址和端口。例如:
mongoexport.exe --host="mongodb0.remote.server" --port=27017 --collection=movies --db=bookdb --out=movies.json
如果想要导出副本集中的数据,可以在 --uri 连接字符串中指定副本集和成员:
mongoexport.exe --uri="mongodb://mongodb0.remote.server:27017,mongodb1.remote.server:27017,mongodb2.remote.server:27017/bookdb?replicaSet=myReplicaSetName" --collection=movies --out=movies.json
或者,也可以在 --host 参数中指定副本集和成员:
mongoexport.exe --host="myReplicaSetName/mongodb0.remote.server:27017,mongodb1.remote.server:27017,mongodb2.remote.server:27017" --collection=movies --db=bookdb --out=movies.json
默认情况下,mongoexport 通过副本集的主节点读取数据。不过,我们可以通过指定读优先级修改这个配置。例如:
mongoexport.exe --uri="mongodb://mongodb0.remote.server:27017,mongodb1.remote.server:27017,mongodb2.remote.server:27017/bookdb?replicaSet=myReplicaSetName&readPreference=secondary" --collection=movies --out=movies.json
以上命令将会从副本集的从节点读取数据。
或者,也可以通过 --readPreference 参数指定读取的节点:
mongoexport.exe --host="myReplicaSetName/mongodb0.remote.server:27017,mongodb1.remote.server:27017,mongodb2.remote.server:27017" --readPreference=secondary --collection=movies --out=movies.json
如果想要导出分片集群中的数据,可以在 --uri 连接字符串中指定 mongos 实例的地址。例如:
mongoexport.exe --uri="mongodb://mongos0.remote.server:27017/bookdb" --collection=movies --out=movies.json
或者也可以在 --host 参数中指定 mongos 实例的地址和端口:
mongoexport.exe --host="mongos0.remote.server:27017" --collection=movies --db=bookdb --out=movies.json