我有一个分布式MongoDB 3.2数据库。该系统使用RedHat操作系统安装在两个节点上。

我想使用python和PyMongo驱动程序(或其他一些驱动程序)来启用集合的分片,并指定复合分片键。

在mongo shell中,它可以工作:

> use mongotest
> sh.enableSharding("mongotest")
> db.signals.createIndex({ valueX: 1, valueY: 1 }, { unique: true })
> sh.shardCollection("mongotest.signals", { valueX: 1, valueY: 1 })


(“ mongotest”是数据库,“ signals”是集合)

最后两行我想在代码中添加它们。有谁知道这在python中是否可行?如果是这样,怎么做?

非常感谢你,
对不起,我的英语不好

最佳答案

将shell命令直接转换为python如下所示。

from pymongo import MongoClient


client = MongoClient()
db = client.admin # run commands against admin database.

db.command('enableSharding',  'mongotest')
db.command({'shardCollection': 'mongotest.signals', 'key': {'valueX': 1, 'valueY': 1}})


但是,您可能需要通过运行以下命令来确认在数据库中同时公开了enableSharding和shardCollection

db.command('listCommands')

10-06 10:35