sql >> Databáze >  >> NoSQL >> MongoDB

Mongodb:volání db.printShardingStatus() / sh.status() v Javě (a JavaScriptu)

Mnoho pomocných funkcí shellu není k dispozici pro spuštění kódu na straně serveru. V případě printShardingStatus() , dává to smysl, protože neexistuje konzole, kterou by bylo možné použít pro tisk výstupu a raději byste měli vrácený řetězec. Naštěstí byste měli být schopni vytáhnout zdroj funkce shellu a znovu jej implementovat do vaší aplikace (např. zřetězením vráceného řetězce místo přímého tisku).

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

Podívejme se tedy na printShardingStatus() funkce...

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

    // ...
}

Před převedením všech výstupních příkazů na zřetězení řetězců byste se měli ujistit, že máte k dispozici všechny ostatní metody DB. Z hlediska výkonu si myslím, že nejlepší možností je portovat vnitřnosti této funkce do Javy a vyhnout se hodnocení JS na straně serveru. Pokud se ponoříte hlouběji do printShardingStatus() funkce, uvidíte, že právě vydává find() v konfigurační databázi spolu s nějakou group() dotazy.

Pokud chcete zůstat u hodnocení JS a raději byste tento kód neuchovávali ve své aplikaci Java, můžete se také podívat na ukládání funkcí JS na straně serveru .



  1. Mongo Query s Regex v Node JS fungující NA PROMĚNNÉ

  2. Nelze vytvořit jmenný prostor v transakci s více dokumenty (MongoDB 4.0, Spring Data 2.1.0, Spring Boot)

  3. Redis pipeline pořadí provedení

  4. Alamofire s problémy s připojením k localhost