mongoexport error: Failed: Failed to parse + Unrecognized field 'snapshot

mongoexport error: Failed: Failed to parse + Unrecognized field 'snapshot

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

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

OS:Linuxmint 19.1 肉桂
mongo --版本 MongoDB shell 版本 v4.0.10
mongod --版本 数据库版本 v3.6.3
我还有一个单独的数据库文件夹。

首先我开始

/home/me/mongodb/bin/mongod --dbpath=/home/me/mongodb-data

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

~/mongodb/bin $ mongoexport  --db task-manager --collection users --out ~/Desktop/test.json

我希望任务管理器数据库中的用户集合将作为 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'.

出了什么问题,我应该如何解决?有没有更好的迁移数据的方法?

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

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

但是加上--forceTableScan开关可以解决问题

mongodump --forceTableScan -d database_name

这是由于在 mongo 4.0 中引入的 mongo 快照功能 如果 mongo 客户端低于 4.0 且数据库高于 4.0,您将面临此问题 您可以通过两个选项解决此问题:

  1. 使用 --forceTableScan
  2. 根据您的 OS 下载最新的 mongo client 并执行命令,您应该不会看到错误 注意:同样的事情发生在 mongodump