Führen Sie MongoDb-Anweisungen in Python aus
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.
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.