sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongodb:llamada db.printShardingStatus() / sh.status() en Java (y JavaScript)

Muchas de las funciones auxiliares del shell no están disponibles para la ejecución del código del lado del servidor. En el caso de printShardingStatus() , tiene sentido porque no hay una consola para usar para imprimir la salida y prefiere que se devuelva una cadena. Afortunadamente, debería poder extraer la fuente de la función de shell y volver a implementarla en su aplicación (por ejemplo, concatenar una cadena devuelta en lugar de imprimirla directamente).

$ mongo
MongoDB shell version: 2.2.0
connecting to: test
> db.printShardingStatus
function (verbose) {
    printShardingStatus(this.getSiblingDB("config"), verbose);
}

Entonces, veamos el printShardingStatus() función...

> printShardingStatus
function (configDB, verbose) {
    if (configDB === undefined) {
        configDB = db.getSisterDB("config");
    }
    var version = configDB.getCollection("version").findOne();

    // ...
}

Antes de convertir todas las declaraciones de salida en una concatenación de cadenas, querrá asegurarse de que los otros métodos de base de datos estén disponibles para usted. En cuanto al rendimiento, creo que la mejor opción es trasladar las entrañas de esta función a Java y evitar por completo la evaluación JS del lado del servidor. Si profundiza en printShardingStatus() función, verá que solo está emitiendo find() en la base de datos de configuración junto con algunos group() consultas.

Si desea seguir evaluando JS y prefiere no mantener este código dentro de su aplicación Java, también puede consultar almacenamiento de funciones JS en el lado del servidor .