Pergunta

Tenho um servidor da Web em execução em Python.Ele está obtendo alguns dados de alguns aplicativos e precisa armazená-los no MongoDB.Meu MongoDB está fragmentado. Agora eu quero que meu servidor da Web saiba quanto Shards MongoDB tem.No momento, ele lê isso de um arquivo cfg.Existe uma declaração no MongoDb chamada printshardingstatus onde você pode ver todos os fragmentos.Então, tentei chamar essa declaração do meu Pythonserver.Mas parece que não é possível. Não encontro essa função na API do Pymongo.

Então, minha pergunta é, há uma chance de executar uma instrução MongoDB em Python, para que ela seja diretamente passada e executada em MongoDB?

Foi útil?

Solução

Não há comando de servidor para printShardingStatus - é apenas uma função auxiliar shell mongo (javascript).O ajudante é algumas consultas contra o banco de dados de configuração e, em seguida, alguns agrupamentos e formatação para tornar as coisas mais agradáveis.

Se quiser ver como as coisas funcionam no shell javascript, você pode apenas remover os parênteses ("()") da função e imprimirá o código javascript.

Aqui está o código do 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: " +
   ...

Outras dicas

Você já tentou pymongo ou mongoengine ?Então, talvez envie uma mensagem para os autores ...

Você pode simplesmente obter o banco de dados de configuração e executar find () na coleção de fragmentos como uma coleção normal.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top