2012-11-10 41 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"); 
}