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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top