【问题标题】:mongoexport error: Failed: Failed to parse + Unrecognized field 'snapshotmongoexport 错误:失败:解析失败 + 无法识别的字段“快照”
【发布时间】:2019-11-01 13:25:25
【问题描述】:

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

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

操作系统:Linuxmint 19.1 肉桂
蒙戈--版本 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'.

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

【问题讨论】:

  • 您的 mongo-tools(包含 mongoexport)版本与您的 mongo 服务器版本不兼容,您应该使用最新版本。要迁移数据,请考虑使用 mongodump/mongorestore,这通常比 json 导出更快。
  • 是的,我确实意识到了这一点。虽然我不知道为什么我的数据库显示较低版本...我记得当我安装它时它是 4 或 sth...我正在尝试更新但遇到了一些 repo 问题。稍后再试。

标签: mongodb database-migration data-migration mongoexport


【解决方案1】:

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

【讨论】:

  • 您将如何在生产环境中解决这个问题?
【解决方案2】:

这通常是由于 mongodump 与您的 mongoDB 服务器版本不同而发生的。

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

mongodump --forceTableScan -d database_name

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      • 2015-10-03
      相关资源
      最近更新 更多