目标:将我的本地mongodb数据迁移到mongobd Atlas集群。
尝试:
1.将本地数据导出为json。
2.将json导入集群。
操作系统:Linuxmint 19.1 Cinnamon
mongo-版本
MongoDB Shell版本v4.0.10
mongod --version
数据库版本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'.
出什么问题了,我应该怎么做才能解决?有没有更好的方法来迁移数据?
答案 0 :(得分:16)
这通常是由于mongodump版本与mongoDB服务器版本不同所致。
但是添加--forceTableScan
开关可以解决问题
mongodump --forceTableScan -d database_name
答案 1 :(得分:0)
所以我卸载了所有mongodb并从他们的网站上下载了服务器,shell和工具deb,并确保它们都是Ubuntu 18.04的4.0.10。尽管突触中似乎包含了相同的版本,但我还是决定直接安装deb,以防万一,就像我以前进行命令行安装一样,也从Software Manager中进行了安装,最终得到了不同的版本。使用正确的版本,我终于可以根据需要输出json文件。我还将尝试@sachav提到的mongodump和mongorestore方法。