我正在尝试在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.component
和collection2.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
选项。某处有错误吗?
答案 0 :(得分:1)
exclude_options
需要解压缩并作为命令列表中的单个项传递。
exclude_options = ['--excludeCollection=collection1.component', '--excludeCollection=collection2.component']
cmd = ['mongodump', '--db', database, *exclude_options, '--out', dump_directory]
如上所述,在作业中解包可以在Python 3.*
版本中使用。