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 .