2012-11-10 14 views
6

我是mongo的新手,我使用的是pymongo。我发现pymongo的文档遍布全球。Pymongo - 如何获得代表Python字典的状态

1)我有一个rep集。从mongo shell中,如果我运行下面的代码,就可以得到我需要的东西。

sudo mongo 111.111.111.111 --eval "printjson(rs.status())" 
MongoDB shell version: 2.2.1 
connecting to: 111.111.111.111/test 
{ 
    "set" : "hey", 
    "date" : ISODate("2012-11-10T11:47:58Z"), 
    "myState" : 1, 
    "members" : [ 
     { 
      "_id" : 0, 
      "name" : "111.111.111.111:27017", 
      "health" : 1, 
      "state" : 1, 
      "stateStr" : "PRIMARY", 
      "uptime" : 69189, 
      "optime" : Timestamp(1352478921000, 1), 
      "optimeDate" : ISODate("2012-11-09T16:35:21Z"), 
      "self" : true 
     } 
    ], 
    "ok" : 1 
} 

我需要从pymongo获取该信息。

1)I连接到主。我得到none但每节点上面是主要的:

c = ReplicaSetConnection("111.111.111.111:27017", replicaSet='heythat') 
print c.primary 
None 

2)我想运行c.command("status")但不支持该操作。

那么,如何我用pymongo返回主,也返回Python字典状态?

回答

9

rs.status()所说的“replSetGetStatus” admin命令,在Python中,你能做到这一点,像这样:

conn = ReplicaSetConnection("111.111.111.111:27017", replicaSet='heythat') 
conn.admin.command('replSetGetStatus') 

普罗蒂普:如果你想知道什么命令外壳帮手电话,然后离开托架关闭功能看到代码如:

heythat:PRIMARY> rs.status 
function() { 
    return db._adminCommand("replSetGetStatus"); 
}