mongoexport 错误:失败:无法解析 + 无法识别的字段'快照

Ann*_*nie 7 data-migration database-migration mongodb mongoexport

目标:将我的本地 mongodb 数据迁移到 mongodb atlas 集群。

尝试:
1. 将本地数据导出为 json。
2.导入json到集群。

操作系统:Linuxmint 19.1 Cinnamon
mongo --version MongoDB shell version v4.0.10
mongod --version db version v3.6.3
我还有一个单独的数据库文件夹。

所以首先我开始

/home/me/mongodb/bin/mongod --dbpath=/home/me/mongodb-data
Run Code Online (Sandbox Code Playgroud)

然后我打开一个终端并输入

~/mongodb/bin $ mongoexport  --db task-manager --collection users --out ~/Desktop/test.json
Run Code Online (Sandbox Code Playgroud)

我希望任务管理器数据库中的用户集合将打印为 test.json 文件,但出现错误:

2019-06-18T22:05:06.108+0200    connected to: localhost
2019-06-18T22:05:06.108+0200    Failed: Failed to parse: { find: "users", filter: {}, sort: {}, skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "task-manager" }. Unrecognized field 'snapshot'.
Run Code Online (Sandbox Code Playgroud)

出了什么问题,我应该怎么做才能解决它?有没有更好的方法来迁移数据?

Ale*_*lig 26

这通常是由于 mongodump 与您的 mongoDB 服务器版本不同造成的。

但是加--forceTableScanswitch可以解决问题

mongodump --forceTableScan -d database_name
Run Code Online (Sandbox Code Playgroud)


Ann*_*nie -2

所以我卸载了所有 mongodb 并从他们的网站下载了服务器、shell 和工具 deb,并确保它们都是适用于 Ubuntu 18.04 的 4.0.10。虽然突触中似乎包含相同的版本,但为了以防万一,我决定直接安装 deb,因为我之前进行了命令行安装,并且还从软件管理器进行了安装,最终得到了不同的版本。版本正确后,我终于可以输出我想要的 json 文件了。我还会尝试 @sachav 提到的 mongodump 和 mongorestore 方法。

  • 对于生产环境,您将如何解决这个问题? (2认同)