Esegui le istruzioni MongoDb in Python
Domanda
Ho un server web in esecuzione in Python.Riceve alcuni dati da alcune app e deve archiviarli in MongoDB.Il mio MongoDB è frammentato. Ora voglio che il mio server Web sappia quanti Shard ha MongoDB.Al momento lo legge da un file cfg.C'è un'istruzione in MongoDb chiamata Printshardingstatus dove puoi vedere tutti i frammenti.Quindi ho provato a chiamare questa dichiarazione dal mio Pythonserver.Ma sembra che non sia possibile. Non trovo una tale funzione nell'API di Pymongo.
Quindi la mia domanda è: c'è la possibilità di eseguire un'istruzione MongoDB in Python, in modo che venga passata ed eseguita direttamente in MongoDB?
Soluzione
Non esiste un comando server per printShardingStatus - è solo una funzione di supporto della shell mongo (javascript).L'helper è contro alcune domande il database di configurazione e poi alcuni raggruppamenti e formattazioni per rendere le cose più belle.
Se mai vuoi vedere come funzionano le cose nella shell javascript, tu può semplicemente rimuovere le parentesi ("()") dalla funzione e stamperà il file codice javascript.
Ecco il codice dalla shell javascript.
> 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: " +
...
Altri suggerimenti
Hai provato pymongo o mongoengine ?Allora forse manda un messaggio agli autori ...
Puoi semplicemente ottenere il database di configurazione ed eseguire find () sulla raccolta di frammenti proprio come una normale raccolta.