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 错误:失败:解析失败 + 无法识别的字段“快照”的主要内容,如果未能解决你的问题,请参考以下文章
PHPMailer 错误:php_network_getaddresses:getaddrinfo 失败:LOCALHOST(XAMPP)中的名称解析暂时失败
安装SQL2000时,出现错误“对于MSSQLServer服务,服务控制器操作失败:1726远程过程调用失败”,怎样解决?