MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongodb:wywołanie db.printShardingStatus() / sh.status() w Javie (i JavaScript)

Wiele funkcji pomocniczych powłoki nie jest dostępnych do wykonania kodu po stronie serwera. W przypadku printShardingStatus() , ma to sens, ponieważ nie ma konsoli, której można by użyć do drukowania danych wyjściowych, a raczej wolałbyś zwracać ciąg znaków. Na szczęście powinieneś być w stanie pobrać źródło funkcji powłoki i ponownie zaimplementować je w swojej aplikacji (np. łącząc zwrócony ciąg znaków zamiast bezpośrednio drukować).

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

Spójrzmy więc na printShardingStatus() funkcja...

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

    // ...
}

Przed przekształceniem wszystkich instrukcji wyjściowych w konkatenację ciągów, chciałbyś się upewnić, że wszystkie inne metody DB są dla Ciebie dostępne. Jeśli chodzi o wydajność, myślę, że najlepszą opcją jest przeniesienie wnętrza tej funkcji do Javy i całkowite uniknięcie oceny JS po stronie serwera. Jeśli zagłębisz się w printShardingStatus() funkcja, zobaczysz, że po prostu wydaje find() w bazie danych konfiguracji wraz z niektórymi group() zapytania.

Jeśli chcesz pozostać przy ocenianiu JS i nie chcesz trzymać tego kodu w swojej aplikacji Java, możesz również zajrzeć do przechowywanie funkcji JS po stronie serwera .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jaka jest różnica między changeStream a tailable kursorem w MongoDB?

  2. Wykonywanie zapytań o elementy tablicy za pomocą Mongo

  3. Jak usunąć bazę danych za pomocą Mongoose?

  4. Jak zakpić mongodb dla testów jednostkowych Pythona?

  5. Repozytorium Spring Data MongoDB z niestandardową nazwą kolekcji