sql >> Database >  >> NoSQL >> MongoDB

Mongodb:db.printShardingStatus() / sh.status() aanroep in Java (en JavaScript)

Veel van de helperfuncties van de shell zijn niet beschikbaar voor het uitvoeren van code aan de serverzijde. In het geval van printShardingStatus() , is het logisch omdat er geen console is om te gebruiken voor het afdrukken van uitvoer en je liever een string teruggeeft. Gelukkig zou je in staat moeten zijn om de bron van de shell-functie op te halen en deze opnieuw te implementeren in je applicatie (bijvoorbeeld een geretourneerde string samenvoegen in plaats van direct af te drukken).

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

Laten we dus eens kijken naar de printShardingStatus() functie...

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

    // ...
}

Voordat u alle uitvoerinstructies omzet in tekenreeksaaneenschakeling, moet u ervoor zorgen dat de andere DB-methoden allemaal voor u beschikbaar zijn. Wat de prestaties betreft, denk ik dat de beste optie is om de ingewanden van deze functie naar Java te porteren en JS-evaluatie aan de serverzijde helemaal te vermijden. Als je dieper in de printShardingStatus() . duikt functie, zul je zien dat het gewoon find() . uitgeeft op de configuratiedatabase samen met wat group() vragen.

Als je JS wilt evalueren en deze code liever niet in je Java-toepassing wilt bewaren, kun je ook kijken naar JS-functies server-side opslaan .



  1. Wijzig al mijn documenten geneste documentwaarde

  2. MongoDB:Worden bulkbewerkingen naar de oplog als geheel geschreven?

  3. MongoDB - Object bijwerken of invoegen in array

  4. Het bijwerken van records in MongoDB via pymongo leidt tot verwijdering van de meeste ervan