mongodb

mongodb://[username:password@]host1[:port1][,host2[:port2],…[,hostN[:portN]]][/[database][?options]]

conn = MongoClient('localhost', 27017)

单机链接
client = MongoClient('mongodb://localhost:27017/')

replication set 链接
from pymongo import MongoReplicaSetClient
conn = MongoReplicaSetClient("10.0.0.200:28017,10.0.0.200:28018,10.0.0.200:28019", replicaset='my_repl')

print (conn)
print (conn.primary)
print (conn.seeds)
print (conn.secondaries)
print (conn.read_preference)
print (conn.server_info())


分片集群
conn = pymongo.Connection('192.168.1.1', 27017)
db = conn['test'] #假定名为test的db已经存在
db_admin = conn['admin'] #command的执行必须通过名为admin的db才能进行
col_data = db["data"]
for i in range(1, 50):

col_data.insert({'_id':i, 'value':(i*200)})
#插入测试数据,必须在分片之前保证shard key的存在,本例中为_id
db_admin.command('enablesharding', 'test')
#确认目标db的sharding功能开启(这行代码一个数据库只执行一次有效,如果已经#设置,则会抛出异常)

db_admin.command('shardcollection', 'test.data', key = {'_id':1})
#指定目标collection和对应的shard key(这行一个表执行一次,如果出现多表,表名不同的情况下,应该每张表都执行一次)

conn.close()

如何查看已经分片成功:
在linux中进入mongo命令界面,
use test
db.test.data.stats()

会打印出分片信息。

并且shard key可以指定多个,同建立复合索引类似:
db_admin.command('shardcollection', 'test.data', key = {'_id':1, 'a':1, 'b':1})

posted @ 2019-01-18 18:52  不沉之月  阅读(99)  评论(0编辑  收藏  举报