7

私はmongoが初めてで、pymongoを使用しています。pymongo のドキュメントがいたるところにあることがわかりました。

1) レップセットを持っています。mongo シェルから、以下を実行すると、必要なものが得られます。

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) プライマリに接続します。私は取得しますnoneが、上記のノードはプライマリです:

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

2) 実行したいのですc.command("status")が、その操作はサポートされていません。

では、pymongo を使用してプライマリを返し、ステータスを Python 辞書として返すにはどうすればよいでしょうか?

4

1 に答える 1

12

rs.status()「replSetGetStatus」管理コマンドを呼び出します。Python では、次のように実行できます。

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

プロのヒント: シェル ヘルパーが呼び出すコマンドを知りたい場合は、関数の括弧を外してコードを確認してください。

heythat:PRIMARY> rs.status
function () {
    return db._adminCommand("replSetGetStatus");
}
于 2012-11-12T12:52:27.790 に答える