MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongodb:chamada db.printShardingStatus() / sh.status() em Java (e JavaScript)


Muitas das funções auxiliares do shell não estão disponíveis para execução de código do lado do servidor. No caso de printShardingStatus() , faz sentido porque não há um console para usar para imprimir a saída e você prefere que uma string seja retornada. Felizmente, você deve conseguir extrair a fonte da função shell e reimplementá-la em seu aplicativo (por exemplo, concatenar uma string retornada em vez de imprimir diretamente).
$ mongo
MongoDB shell version: 2.2.0
connecting to: test
> db.printShardingStatus
function (verbose) {
    printShardingStatus(this.getSiblingDB("config"), verbose);
}

Então, vamos ver o printShardingStatus() função...
> printShardingStatus
function (configDB, verbose) {
    if (configDB === undefined) {
        configDB = db.getSisterDB("config");
    }
    var version = configDB.getCollection("version").findOne();

    // ...
}

Antes de transformar todas as instruções de saída em concatenação de strings, você deve certificar-se de que os outros métodos de banco de dados estejam todos disponíveis para você. Em termos de desempenho, acho que a melhor opção é portar as entranhas dessa função para Java e evitar completamente a avaliação JS do lado do servidor. Se você mergulhar mais fundo no printShardingStatus() função, você verá que está apenas emitindo find() no banco de dados de configuração junto com alguns group() consultas.

Se você quiser continuar avaliando o JS e preferir não manter esse código em seu aplicativo Java, também pode consultar armazenando funções JS no lado do servidor .