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

Posted

技术标签:

【中文标题】mongoexport 错误:失败:解析失败 + 无法识别的字段“快照”【英文标题】:mongoexport error: Failed: Failed to parse + Unrecognized field 'snapshot 【发布时间】: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 问题。稍后再试。 【参考方案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,您将面临这个问题 您可以通过两个选项来解决此问题:

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

【讨论】:

以上是关于mongoexport 错误:失败:解析失败 + 无法识别的字段“快照”的主要内容,如果未能解决你的问题,请参考以下文章

解析 Facebook 登录失败,错误代码 251

PHPMailer 错误:php_network_getaddresses:getaddrinfo 失败:LOCALHOST(XAMPP)中的名称解析暂时失败

json解析失败怎么解决?

XML解析失败:格式不符

安装SQL2000时,出现错误“对于MSSQLServer服务,服务控制器操作失败:1726远程过程调用失败”,怎样解决?

git push heroku master 因解析错误而失败 - 哪个文件?