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

Mongodb:db.printShardingStatus() / sh.status() kald i Java (og JavaScript)

Mange af shellens hjælpefunktioner er ikke tilgængelige for server-side-udførelse af kode. I tilfælde af printShardingStatus() , giver det mening, fordi der ikke er en konsol til at bruge til udskrivning af output, og du vil hellere have en streng returneret. Heldigvis burde du være i stand til at hente kilden til skalfunktionen og genimplementere den i din applikation (f.eks. sammenkæde en returneret streng i stedet for at udskrive direkte).

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

Så lad os se på printShardingStatus() funktion...

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

    // ...
}

Før du omdanner alle output-sætningerne til strengsammenkædning, vil du gerne sikre dig, at de andre DB-metoder alle er tilgængelige for dig. Ydeevnemæssigt tror jeg, at den bedste mulighed er at overføre indmaden af ​​denne funktion til Java og helt undgå server-side JS-evaluering. Hvis du dykker dybere ned i printShardingStatus() funktion, vil du se, at den bare udsteder find() på konfigurationsdatabasen sammen med nogle group() forespørgsler.

Hvis du vil blive ved med at evaluere JS og helst ikke vil beholde denne kode i din Java-applikation, kan du også se på lagring af JS-funktioner på serversiden .



  1. mongoexport JSON-parsingsfejl

  2. MongoDB - Indeks bruges ikke ved sortering og begrænsning af forespørgsler med rækkevidde

  3. MongoDB - Importer data

  4. MongoDB-datamodellering:nogen ulemper ved at bruge mange databaser?