完整的错误是:
Failed: error reading collection: Failed to parse: { find: "data", skip: 0, snapshot: true, $readPreference: { mode: "secondaryPreferred" }, $db: "xxx" }. Unrecognized field 'snapshot'.
Mongodump --version返回:
mongodump version: built-without-version-string
git version: built-without-git-spec
Go version: go1.7.3
os: linux
arch: amd64
compiler: gc
OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
我可能需要降级我的版本?否则不确定从何处去...
#1 楼
当然,mongodump与mongoDB服务器之间的版本有所不同(3.6与4.0)。您可以使用docker进行救援:
docker run --rm -v $(pwd):/workdir/ -w /workdir/ mongo:4.0 mongodump -h server -d $database --out /workdir/dump/
借助docker,您可以使用精确版本的cli工具,而无需安装它。
您甚至可以指定别名(在.bashrc中):
alias mongodump="docker run --rm -v $(pwd):/workdir/ -w /workdir/ mongo:4.0 mongodump"
注意:保存转储的文件夹将需要具有写入权限,以便容器中的mongodb用户可以写入已安装的卷。这可以通过在运行上述命令之前手动设置转储文件夹的权限来实现。
在上面的示例中为:
mkdir -m 777 dump
。转储完成后,可以将权限修改回普通权限(即sudo chmod 755 dump
)。评论
我不断收到错误失败:错误转储元数据:为元数据文件转储/ {COLLECTION}创建目录时出错:mkdir dump:权限被拒绝。我尝试使用-u 0和-o / tmp / dump,但无法正常工作。最后,我最终启动了一个容器,运行转储,然后将其复制到容器之外。有什么想法让我弄错了吗?
–第三者
18/12/7在9:59
您需要适当地设置uid:docker run --rm -v $ {pwd):/ workdir / -w / workdir / -u $ {id -u)mongo:4.0 mongodump ...
–ltn100
19年4月23日在9:55
#2 楼
添加--forceTableScan
示例:
mongodump --forceTableScan -d database_name -o target_directory
http://aug2uag.blogspot.com/2018/08/mongoexport-unrecognized-field-snapshot .html
评论
您能解释一下错误的含义吗?为什么这个论点有很大帮助?
– F3L1X79
19年11月22日在9:26
@ F3L1X79参见此答案上的链接
– Eido95
19/12/23在16:13
这应该是公认的答案。 Docker不是解决问题的必要条件。
– RealHandy
20-6-25在16:29
#3 楼
我在CentOS中也遇到以下规格问题,其中我的mongodb使用用户名和密码进行了身份验证我使用了以下命令:
mongodump --forceTableScan -h <mongo database where it is hosted> -u <username> -d <databasename> -o /<output directory>/
并在出现提示时输入mongodb密码。
默认情况下,当扫描具有该索引的集合时,mongodump默认使用_id索引(例如,视图没有任何索引)索引)。指定--forceTableScan可以指示mongodump在不使用_id索引的情况下扫描收集数据。
有关更多信息,请参考此链接。
#4 楼
如果您从Mongo Atlas转储,则应该可以使用。mongodump --forceTableScan --uri "mongodb+srv://username:password@clusteraaa.xxxx.mongodb.net/db_name" --out "backup-dir"
评论
您的O / S和MongoDB服务器的版本是什么?您的mongodump --version输出表明您已经从源代码构建了工具,因此尚不清楚对应的MongoDB版本。如果可能的话,我建议下载官方二进制文件。