《MongoDB入门教程》第31篇 数据导入和导出

本文将会介绍如何利用 mongoimport 工具将文件导入本地 MongoDB 数据库服务器,以及如何利用 mongoexport 工具将 MongoDB 中的数据导出到文件中。

MongoDB 数据库工具

MongoDB 提供了一系列数据库工具,包括:

  • 二进制导入/导出工具 mongodump、mongorestore 以及 bsondump;
  • 数据导入/导出工具 mongoimport 以及 mongoexport;
  • 诊断工具 mongostat 以及 mongotop;
  • GridFS 工具 mongofiles。

MongoDB 4.4 版本开始,这些数据库工具不再随着服务器一起发布安装,而是使用单独的软件包。

首先,通过下载页面选择相应的版本、平台以及安装文件格式。

《MongoDB入门教程》第31篇 数据导入和导出_第1张图片
然后运行安装文件,按照提示进行安装即可。

同时,我们还需要点击下载示例文件 movies.json。

使用 mongoimport 导入文件

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 导出文件

mongoexport 工具可以将 MongoDB 数据库中的内容导出为 JSON 或者 CSV 文件。

导出 MongoDB 实例中的数据

以下命令用于将本地 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

你可能感兴趣的:(MongoDB,mongodb,数据库,nosql)