【问题标题】:How to enable sharding in shard collections in mongodb using Python?如何使用 Python 在 mongodb 的分片集合中启用分片?
【发布时间】:2020-09-04 23:52:58
【问题描述】:

目前,我正在使用 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 脚本吗?

【问题讨论】:

  • 一般来说,mongo shell 是用于所有管理操作的命令行工具。驱动程序主要用于应用程序开发。

标签: python json mongodb relational-database pymongo


【解决方案1】:

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

【讨论】:

  • 能否请您澄清一下 - mongo、mongos 和 mogod 之间有什么区别?我正在尝试在 AWS 实例上使用该代码,如果它可能有帮助的话
猜你喜欢
  • 2021-07-26
  • 2022-10-03
  • 2013-08-31
  • 2021-07-14
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-08-21
相关资源
最近更新 更多