2012-11-10 4 views
6

Jestem nowy w mongo i używam pymongo. Znalezienie dokumentacji dla pymongo jest wszędzie.Pymongo - jak uzyskać status jako słownik Pythona dla zestawów rep

1) Mam zestaw powtórzeń. Z powłoki mongo, jeśli uruchomię poniżej, dostaję to, czego potrzebuję.

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 
} 

Muszę uzyskać tę informację od pymongo.

1) Łączę się z podstawowym. Mam none ale za powyższe tego węzła jest podstawowym:

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

2) chcę uruchomić c.command("status") jednak, że operacja nie jest obsługiwana.

Jak więc użyć pymongo do zwrócenia głównego, a także do zwrotu statusu jako słownika Python?

Odpowiedz

9

rs.status() wywołuje komendę admin „replSetGetStatus” w Pythonie można zrobić tak:

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

protip: Jeśli chcesz wiedzieć, co dowodzić połączenia powłoki pomocnika, a następnie pozostawić wsporniki wyłączanie funkcji aby zobaczyć kod np .:

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