我试图在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
选项。某处有错误吗?
exclude_options
需要在命令列表中的单个项目中解开包装并传递。
exclude_options = ['--excludeCollection=collection1.component', '--excludeCollection=collection2.component']
cmd = ['mongodump', '--db', database, *exclude_options, '--out', dump_directory]
在Python 3.*
版本中的上述作品中解开包装。