Frage

Ich habe einen Webserver in Python.Er erhält einige Daten von einigen Apps und muss diese in MongoDB speichern.Meine MongoDB ist gespalten. Jetzt möchte ich, dass mein Webserver weiß, wie viel Shards MongoDB hat.Im Moment liest er dies aus einer CFG-Datei.In MongoDb gibt es eine Anweisung mit dem Namen printhardingstatus, in der Sie alle Shards sehen können.Also habe ich versucht, diese Aussage von meinem Pythonserver aufzurufen.Aber es scheint, dass es nicht möglich ist. Ich finde eine solche Funktion nicht in der Pymongo-API.

Meine Frage ist also, ob es eine Möglichkeit gibt, eine MongoDB-Anweisung in Python auszuführen, damit sie direkt in MongoDB übergeben und ausgeführt wird.

War es hilfreich?

Lösung

Es gibt keinen Serverbefehl für printShardingStatus - es handelt sich lediglich um eine Mongo-Shell-Hilfsfunktion (Javascript).Der Helfer ist ein paar Fragen dagegen die Konfigurationsdatenbank und dann einige Gruppierungen und Formatierungen, damit die Dinge schöner aussehen.

Wenn Sie jemals sehen möchten, wie die Dinge in der Javascript-Shell funktionieren, werden Sie kann einfach die parens ("()") aus der Funktion entfernen und es wird die gedruckt Javascript-Code.

Hier ist der Code aus der Javascript-Shell.

> printShardingStatus
function (configDB, verbose) {
   if (configDB === undefined) {
       configDB = db.getSisterDB("config");
   }
   var version = configDB.getCollection("version").findOne();
   if (version == null) {
       print("not a shard db!");
       return;
   }
   var raw = "";
   var output = function (s) {raw += s + "\n";};
   output("--- Sharding Status --- ");
   output("  sharding version: " +
   ...

Andere Tipps

Haben Sie pymongo oder mongoengine ?Dann senden Sie vielleicht eine Nachricht an die Autoren ...

Sie können einfach die Konfigurationsdatenbank abrufen und find () für die Shards-Sammlung wie für die normale Sammlung ausführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top