mongodump忽略一些指定的集合

sas*_*imi 36 mongodb mongodump

我试图在产品服务器上备份我的mongo数据库,然后恢复然后返回到登台服务器.这里出现了一些问题,db中有很多集合,我想igonre一些我不想在登台服务器上恢复的集合.

我可以通过转储staging db,转储产品db,然后将prodct恢复到staging useing --drop选项来解决这个问题.并在staging db中恢复指定的集合.呃..真的很糟糕.

转储产品数据库

mongodump --host product-server-host --username abcd --password bcda -d db -o pruduct-dump-dir
Run Code Online (Sandbox Code Playgroud)

2. dump staging db

mongodump --host staging-server-host --username abcd --password bcda -d db -o staging -dump-dir
Run Code Online (Sandbox Code Playgroud)

3.恢复所有集合,然后恢复集合,将 恢复pruduct-dump-dir恢复到登台服务器

mongorestore --host staging-server-host --username abcd --password bcda --drop pruduct-dump-dir

mongorestore --host staging-server-host --username abcd --password bcda --drop --collection coll pruducting-dump-dir
Run Code Online (Sandbox Code Playgroud)

我在转储时有没有像ignore-collection这样的选项?任何建议将不胜感激:3

Dan*_*ada 65

现在可从3.0.0版开始

--excludeCollection <collection_name>
--excludeCollectionsWithPrefix <collection_prefix>
Run Code Online (Sandbox Code Playgroud)

重复以排除多于1个

查看文档

  • @ Thor84no你是对的,没有迹象表明它意味着什么.但是要排除多个集合,您可以重复excludeCollection参数(我认为这就是它们对数组的意义).示例:`mongodump --excludeCollection = users --excludeCollection = jobs -d mydatabase` (8认同)
  • 所述文档似乎完全没有说明"字符串数组"的含义.在shell中没有真正统一的数组作为参数的想法,所以这可能意味着什么.它是一个带逗号分隔符的字符串吗?在遇到新标志之前是否有任意数量的字符串?我们应该在它周围加上`()`s或`[]`吗?如何用不同的集合重复旗帜呢?所有这些都被用作阵列的替代品,如果有人能够澄清他们真正想要的东西,那就太好了. (7认同)

小智 8

mongodump --db test --excludeCollection=users --excludeCollection=salaries
Run Code Online (Sandbox Code Playgroud)


Nic*_*ick 7

您可以添加--collection COLLECTION_NAME转储所需的集合.默认情况下,如果未指定要从数据库转储的集合,MongoDump将转储该数据库中的所有集合.

  • 是的,像`--exclude_collection col1 col2 col3`这样的东西会很棒.在http://docs.mongodb.org/manual/reference/program/mongodump/中没有提到它.在MongoDB Jira中似乎有一个功能请求:https://jira.mongodb.org/browse/SERVER-2459您应该投票支持该问题 (13认同)

Dav*_*vid 6

从 Mongo 3.4 开始,您现在--nsExclude <namespace pattern>可以在从 Mongo 数据库转储还原时指定一个选项,这将从还原操作中排除指定的命名空间。这在mongodump操作已经发生时特别有用。

官方文档在这里:https : //docs.mongodb.com/manual/reference/program/mongorestore/#cmdoption-nsexclude

您可以使用通配符排除多个集合:

mongorestore --db test --nsExclude 'test.*_tmp'
Run Code Online (Sandbox Code Playgroud)

或者,也可以指定多个--nsExclude选项:

mongorestore --db test --nsExclude 'test.collection1' --nsExclude 'test.collection2'
Run Code Online (Sandbox Code Playgroud)