Banyak fungsi pembantu shell tidak tersedia untuk eksekusi kode sisi server. Dalam kasus printShardingStatus()
, masuk akal karena tidak ada konsol yang digunakan untuk mencetak output dan Anda lebih suka mengembalikan string. Untungnya, Anda seharusnya dapat mengambil sumber dari fungsi shell dan mengimplementasikannya kembali di aplikasi Anda (misalnya, menggabungkan string yang dikembalikan alih-alih mencetak secara langsung).
$ mongo
MongoDB shell version: 2.2.0
connecting to: test
> db.printShardingStatus
function (verbose) {
printShardingStatus(this.getSiblingDB("config"), verbose);
}
Jadi, mari kita lihat printShardingStatus()
fungsi...
> printShardingStatus
function (configDB, verbose) {
if (configDB === undefined) {
configDB = db.getSisterDB("config");
}
var version = configDB.getCollection("version").findOne();
// ...
}
Sebelum mengubah semua pernyataan keluaran menjadi rangkaian string, Anda ingin memastikan bahwa semua metode DB lainnya tersedia untuk Anda. Dari segi kinerja, saya pikir opsi terbaik adalah mem-port bagian dalam fungsi ini ke Java dan menghindari evaluasi JS sisi server sama sekali. Jika Anda menyelam lebih dalam ke printShardingStatus()
fungsi, Anda akan melihatnya hanya mengeluarkan find()
pada database konfigurasi bersama dengan beberapa group()
kueri.
Jika Anda ingin tetap mengevaluasi JS dan lebih suka tidak menyimpan kode ini dalam aplikasi Java Anda, Anda juga dapat melihat ke menyimpan fungsi JS sisi server .