Pregunta

Tengo un servidor web ejecutándose en Python.Está obteniendo algunos datos de algunas aplicaciones y necesita almacenarlos en MongoDB.Mi MongoDB está fragmentado. Ahora quiero que mi servidor web sepa cuánto Shards MongoDB tiene.Por el momento, lee esto de un archivo cfg.Hay una declaración en MongoDb llamada printshardingstatus donde puede ver todos los fragmentos.Así que intenté llamar a esta declaración desde mi servidor Python.Pero parece que no es posible. No encuentro tal función en la API de Pymongo.

Entonces, mi pregunta es, ¿existe la posibilidad de ejecutar una instrucción MongoDB en Python, de modo que se pase y ejecute directamente en MongoDB?

¿Fue útil?

Solución

No hay un comando de servidor para printShardingStatus; es solo una función auxiliar de shell de mongo (javascript).El ayudante es algunas consultas contra la base de datos de configuración y luego algunas agrupaciones y formateo para que las cosas se vean mejor.

Si alguna vez desea ver cómo funcionan las cosas en el shell de JavaScript, simplemente puede eliminar el parens ("()") de la función e imprimirá el código javascript.

Aquí está el código del shell de 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: " +
   ...

Otros consejos

¿Ha probado pymongo o mongoengine ?Entonces quizás envíe un mensaje a los autores ...

Simplemente puede obtener la base de datos de configuración y ejecutar find () en la colección de fragmentos como una colección normal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top