2012-11-10 5 views
6

Ich bin neu bei Mongo und ich benutze Pymongo. Ich finde die Dokumentation für Pymongo überall zu finden.Pymongo - wie man Status als Python-Wörterbuch für Rep-Sätze bekommt

1) Ich habe einen Rep-Satz. Von der Mongo Shell bekomme ich, wenn ich unten laufe, das, was ich brauche.

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 
} 

Ich brauche diese Informationen von Pymongo.

1) Ich verbinde mich mit dem primären. Ich bekomme none aber je die über diesem Knoten ist primär:

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

2) Ich möchte laufen c.command("status") aber, dass der Betrieb wird nicht unterstützt.

Also, wie benutze ich pymongo, um den primären zurückzugeben und auch als ein Python-Wörterbuch zurückzugeben?

Antwort

9

rs.status() ruft der Admin Kommando ‚replSetGetStatus‘, in Python können Sie das tun, wie so:

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

Protip: Wenn Sie wissen wollen, was ein Shell-Helfer Anrufe befehlen, dann die Klammern weglassen, die Funktion um den Code zu sehen zB:

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