mongodump命令中的--excludeCollection选项似乎被忽略了

时间:2017-12-19 10:27:24

标签: python mongodb

我正在尝试在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选项。某处有错误吗?

1 个答案:

答案 0 :(得分:1)

exclude_options需要解压缩并作为命令列表中的单个项传递。

exclude_options = ['--excludeCollection=collection1.component', '--excludeCollection=collection2.component']

cmd = ['mongodump', '--db', database, *exclude_options, '--out', dump_directory]

如上所述,在作业中解包可以在Python 3.*版本中使用。