首页 > 解决方案 > mongorestore 的 nsInclude 参数无效

问题描述

尽管包括_--nsInclude

这是我尝试过的命令(我也尝试过参数顺序,这似乎并不重要,正如预期的那样)。

mongorestore --nsInclude=myns.mycollection --uri mongodb://user:pass@mongo/myns?authSource=admin --gzip --drop --preserveUUID --archive="/data/backups/myns/myns.bson.gz"

(如果重要的话)我创建了这样的文件:

mongodump --uri mongodb://user:pass@mongo/myns?authSource=admin --gzip --archive="/data/backups/myns/myns.bson.gz"

有趣的是,我的程序输出包括以下语句:

The --db and --collection flags are deprecated for this use-case; please use --nsInclude instead, i.e. with --nsInclude=${DATABASE}.${COLLECTION}

(即使 --db 和 --collection 不在命令中)

网上有很多关于 mongorestore 与 --nsInclude 配合得很好的例子。这肯定不是bug吧?

完整的 mongorestore 输出:

mongodump --uri mongodb://user:pass@mongo/myns?authSource=admin --gzip --archive="/data/backups/myns/myns.bson.gz"
The --db and --collection flags are deprecated for this use-case; please use --nsInclude instead, i.e. with --nsInclude=${DATABASE}.${COLLECTION}
preparing collections to restore from
reading metadata for myns.odwhoms from archive '/data/backups/myns/myns.bson.gz'
restoring myns.odwhoms from archive '/data/backups/myns/myns.bson.gz'
no indexes to restore
finished restoring myns.odwhoms (5 documents, 0 failures)
reading metadata for myns.audits from archive '/data/backups/myns/myns.bson.gz'
restoring myns.audits from archive '/data/backups/myns/myns.bson.gz'
no indexes to restore
finished restoring myns.audits (44 documents, 0 failures)
reading metadata for myns.odwhats from archive '/data/backups/myns/myns.bson.gz'
restoring myns.odwhats from archive '/data/backups/myns/myns.bson.gz'
no indexes to restore
finished restoring myns.odwhats (5 documents, 0 failures)
54 document(s) restored successfully. 0 document(s) failed to restore.

标签: mongodbdatabase-backupsmongorestore

解决方案


经过更多的试验,似乎我的连接字符串中包含数据库名称是在内部隐式设置“--db”选项的内容。通过添加 --nsInclude 参数,我只是重新指定了一个已经在恢复范围内的集合。

如果我删除数据库名称,nsInclude 开始正常工作:

mongorestore --uri mongodb://user:pass@mongo/?authSource=admin --gzip --drop --preserveUUID --archive="/data/backups/myns/myns.bson.gz" --nsInclude=myns.mycollection

推荐阅读