首页 > 解决方案 > 如何使用 Python 在 mongodb 的分片集合中启用分片?

问题描述

目前,我正在使用 bash 脚本来启用 D​​B 分片,然后进行分片收集。我正在使用评估:

mongo <ip_host> --eval "sh.enableSharding(<name_db>)

然后,令人惊讶的是,碎片收集:

mongo <ip_host> --eval "sh.shardCollection("<db_name>.<collection>", {shardKey : 1})"

我正在尝试做同样的事情,但是从 Python 使用 pymongo lib。我有一些想法:

client = pymongo.MongoClient()
client.admin.command('enableSharding', db_name)    
client.admin.command('shardCollection', f'{db_name}.{collection}), key=shard_key)

或使用评估:

db_name.eval("sh.enableSharding", collection)
db_name.eval("sh.shardCollection", collection)

但这些方法都不起作用。您有什么建议或者我应该使用 os.system() 从 Python 调用 bash 脚本吗?

标签: pythonjsonmongodbrelational-databasepymongo

解决方案


你的命令client.admin.command('enableSharding', db_name)是正确的;但是它只能针对一个mongos实例运行;我怀疑您正在尝试针对mongod实例运行它。


推荐阅读