MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongodb:chiamata db.printShardingStatus() / sh.status() in Java (e JavaScript)

Molte delle funzioni di supporto della shell non sono disponibili per l'esecuzione di codice lato server. Nel caso di printShardingStatus() , ha senso perché non esiste una console da utilizzare per la stampa dell'output e si preferisce che venga restituita una stringa. Per fortuna, dovresti essere in grado di richiamare il sorgente della funzione shell e reimplementarlo nella tua applicazione (ad esempio concatenando una stringa restituita invece di stampare direttamente).

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

Quindi, diamo un'occhiata a printShardingStatus() funzione...

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

    // ...
}

Prima di trasformare tutte le istruzioni di output in una concatenazione di stringhe, assicurati che gli altri metodi DB siano tutti disponibili. Per quanto riguarda le prestazioni, penso che l'opzione migliore sia trasferire le parti interne di questa funzione su Java ed evitare del tutto la valutazione JS lato server. Se ti immergi più a fondo in printShardingStatus() funzione, vedrai che sta emettendo solo find() nel database di configurazione insieme ad alcuni group() domande.

Se vuoi continuare a valutare JS e preferisci non mantenere questo codice all'interno della tua applicazione Java, puoi anche esaminare memorizzazione di funzioni JS lato server .