如何使用 Python 在 mongodb 的分片集合中启用分片?

How to enable sharding in shard collections in mongodb using Python?

目前,我正在使用 bash-脚本来为数据库启用分片,然后进行分片收集。 我正在使用评估:

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

然后,惊喜,碎片收集:

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

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

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-脚本吗?

你的命令client.admin.command('enableSharding', db_name)是正确的;然而它can only be run against a mongos instance;我怀疑你正试图 运行 它针对 mongod 实例。