python - 如何使用 Python 在 mongodb 的分片集合中启用分片?
问题描述
目前,我正在使用 bash 脚本来启用 DB 分片,然后进行分片收集。我正在使用评估:
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 脚本吗?
解决方案
你的命令client.admin.command('enableSharding', db_name)
是正确的;但是它只能针对一个mongos
实例运行;我怀疑您正在尝试针对mongod
实例运行它。
推荐阅读
- reactjs - 如何摆脱嵌套在 BrowserRouter 中的 MemoryRouter?
- python - 标准化 numpy 信号(3 维数组),按轴 = 2,在 -1 到 1 之间
- r - 为什么 R 会在我的列名中添加前缀?
- r - R 中对大数据集有哪些有用的优化?
- javascript - 当我用函数覆盖 .ajax 时,为什么不能将 post 变量扔到 PHP 中?
- java - 从 C# 到 Android 的 RSA 公钥传输
- node.js - 我无法在 Node.js 命令中指向我的方向
- python - Jupyter 无法识别 numpy(使用自制 pyenv)
- azure - 如何使用 azure api 运行日志分析查询?
- python - 在 django 迁移中使用特定日期预填充 DateTimeField