如何使用 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
实例。
目前,我正在使用 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
实例。