- MongoDump命令中的ExCludeCollection选项似乎被忽略了



我试图在Python的Mongo数据库上执行mongodump,不包括一些集合。我的代码看起来像这样:

cmd = ["mongodump", "--db", database, exclude_options, "--out", dump_directory]
print(cmd)
subprocess.check_output(cmd)

这是print函数的输出:

['mongodump', '--db', 'my_database', '--excludeCollection=collection1.component --excludeCollection=collection2.component', '--out', './mongo']

这是预期的结果。请注意,my_database仅包含collection1.componentcollection2.component,因此我希望一个空文件夹是最终结果。

但是,这是subprocess.check_output function打印的内容:

2017-12-19T10:17:49.095+0000    writing my_database.collection1.component to 
2017-12-19T10:17:49.095+0000    writing my_database.collection2.component to 
2017-12-19T10:17:49.095+0000    done dumping my_database.collection1.component (1 document)
2017-12-19T10:17:49.095+0000    done dumping my_database.collection2.component (6 documents)

这是结果的树:

.
├── my_database
│   ├── collection1.component.bson
│   ├── collection1.component.metadata.json
│   ├── collection2.component.bson
│   └── collection2.component.metadata.json

因此,命令似乎忽略了-excludeCollection选项。某处有错误吗?

exclude_options需要在命令列表中的单个项目中解开包装并传递。

exclude_options = ['--excludeCollection=collection1.component', '--excludeCollection=collection2.component']
cmd = ['mongodump', '--db', database, *exclude_options, '--out', dump_directory]

Python 3.*版本中的上述作品中解开包装。

最新更新