【发布时间】:2018-09-07 06:05:59
【问题描述】:
我有一个带有 mongodb 3.2 的 2 节点集群。我做它只是为了测试目的。 系统有2个副本集。
使用 python 和 pymongo 驱动程序,我创建了一个数据库('test')并启用了分片。然后我创建了 10000 个集合(我为每个集合创建了一个复合分片键并启用它进行分片)。然后,对于每个集合,只插入一个文档。
我使用(并且工作正常)的命令是:
mongoClient = MongoClient('xx.xx.xx.xx:27017')
db = mongoClient.admin
db.command('enableSharding', 'test')
for i in range(0,10000):
col = "test." + str(i)
db.command({'shardCollection': col, 'key': {'ValueX': 1, 'ValueY': 1}})
db = mongoClient['test']
with open('doc.json') as json_data:
post = json.load(json_data)
for i in range(0,10000):
col = db[str(i)]
col.insert(post)
我的疑问: 在 mongo shell 中,我使用 db.stats() 来获取有关“测试”数据库的信息。我发现所有集合都在同一个副本集中(我预计每个集合都可以找到 5000 个)。
当然,我对如何使用 mongodb 将集合存储在分布式系统中存在误解,但我没有意识到是哪一个。
我留下一张参考图片。
希望有人能帮助我理解。
问候,
【问题讨论】:
标签: python mongodb collections pymongo