Sebelum menulis atau mengubah data, kebiasaan pertama yang baik adalah mengintip isi server: database apa saja yang ada, dan collection apa yang dimuatnya. Pemeriksaan singkat ini memberi orientasi, sekaligus menjadi alat verifikasi — setelah insertOne(), kita bisa memastikan collection baru benar-benar terdaftar. Chapter ini membahas perintah cepat show untuk sesi interaktif dan padanan programnya yang bisa dipakai di skrip.
show dbs dan show collections #
Dua perintah berikut sudah sekilas kita pakai di Chapter sebelumnya; saatnya membedahnya dengan tenang. show dbs mendaftar seluruh database di server beserta ukurannya:
show dbsOutput yang Dihasilkan:
admin 80.00 KiB
config 392.00 KiB
local 524.00 KiBIsi daftar bergantung pada riwayat pemakaian server — di server yang dipakai menulis Course ini, muncul pula beberapa database latihan_* dari Chapter lain. Ukuran yang tampil dihitung dari data yang tersimpan, sehingga database latihan yang masih sedikit isinya tercatat dalam hitungan KiB.
show collections mendaftar collection pada database aktif. Kita siapkan database latihan berisi dua collection terlebih dahulu:
use latihan_shelldb.pembeli.insertOne({ nama: "Budi", kota: "Bandung" })
db.produk.insertOne({ nama: "Pensil", harga: 3000 })Output yang Dihasilkan:
{
acknowledged: true,
insertedId: ObjectId('6ad37e5d9eb978165ae73984')
}
{
acknowledged: true,
insertedId: ObjectId('6ad37e5d9eb978165ae73985')
}Sekarang daftarkan isinya:
show collectionsOutput yang Dihasilkan:
pembeli
produkAlias show tables menghasilkan keluaran yang sama — warisan istilah dari dunia tabel yang masih dipertahankan demi kebiasaan pengguna SQL. Urutan baris pada show dbs maupun show collections tidak dijamin, jadi jangan menulis skrip yang bergantung pada urutannya.
Padanan Program: listDatabases #
Perintah show hanyalah gula sintaksis untuk sesi interaktif — mode skrip tidak mengenalnya (lihat Chapter Pengenalan mongosh). Padanan programnya adalah command listDatabases yang dijalankan lewat db.adminCommand():
db.adminCommand({ listDatabases: 1 })Output yang Dihasilkan:
{
databases: [
{ name: 'admin', sizeOnDisk: Long('81920'), empty: false },
{ name: 'config', sizeOnDisk: Long('401408'), empty: false },
{ name: 'latihan_shell', sizeOnDisk: Long('16384'), empty: false },
{ name: 'local', sizeOnDisk: Long('536576'), empty: false }
],
totalSize: Long('1036288'),
totalSizeMb: Long('0'),
ok: 1,
'$clusterTime': {
clusterTime: Timestamp({ t: 1792245341, i: 4 }),
signature: {
hash: Binary.createFromBase64('AAAAAAAAAAAAAAAAAAAAAAAAAAA=', 0),
keyId: Long('0')
}
},
operationTime: Timestamp({ t: 1792245341, i: 4 })
}Mari bedah hasilnya. Array databases memuat satu document per database: name untuk namanya, sizeOnDisk untuk ukurannya dalam byte, dan empty yang bernilai true bila database belum berisi data. Field totalSize menjumlahkan seluruh ukuran, ok: 1 menandakan command berhasil, sedangkan $clusterTime dan operationTime adalah cap waktu replikasi yang nilainya berubah pada setiap eksekusi.
Untuk sekadar daftar nama, tambahkan opsi nameOnly agar hasilnya ringkas:
db.adminCommand({ listDatabases: 1, nameOnly: true })Output yang Dihasilkan:
{
databases: [
{ name: 'admin' },
{ name: 'config' },
{ name: 'latihan_shell' },
{ name: 'local' }
],
ok: 1,
'$clusterTime': {
clusterTime: Timestamp({ t: 1792245341, i: 4 }),
signature: {
hash: Binary.createFromBase64('AAAAAAAAAAAAAAAAAAAAAAAAAAA=', 0),
keyId: Long('0')
}
},
operationTime: Timestamp({ t: 1792245341, i: 4 })
}getCollectionNames dan getCollectionInfos #
Di level collection, padanan show collections ada dua bentuk. Yang pertama cukup memberi array berisi nama:
db.getCollectionNames()Output yang Dihasilkan:
[ 'produk', 'pembeli' ]Bentuk kedua memberi informasi lengkap per collection:
db.getCollectionInfos()Output yang Dihasilkan:
[
{
name: 'produk',
type: 'collection',
options: {},
info: { readOnly: false, uuid: UUID('2d28ce01-b423-4b07-a10a-bf4ed72b0c0d') },
idIndex: { v: 2, key: { _id: 1 }, name: '_id_' }
},
{
name: 'pembeli',
type: 'collection',
options: {},
info: { readOnly: false, uuid: UUID('ad63233a-4353-4578-86ff-9aafd42276a1') },
idIndex: { v: 2, key: { _id: 1 }, name: '_id_' }
}
]Bedah field pentingnya: name adalah nama collection, type membedakan collection biasa dengan view, options memuat opsi pembuatan seperti ukuran capped collection, info.uuid adalah identitas unik yang tidak berubah meski collection di-rename, dan idIndex mendeskripsikan index _id bawaan. Karena hasilnya berupa document, getCollectionInfos() juga menerima filter — misalnya db.getCollectionInfos({ name: "produk" }) untuk memeriksa satu collection.
Sebelum menutup chapter, bersihkan database latihan:
db.dropDatabase()Output yang Dihasilkan:
{ ok: 1, dropped: 'latihan_shell' }Rangkuman #
| Kebutuhan | Di REPL | Padanan program |
|---|---|---|
| Daftar database | show dbs | db.adminCommand({ listDatabases: 1 }) |
| Daftar nama database saja | — | db.adminCommand({ listDatabases: 1, nameOnly: true }) |
| Daftar collection | show collections | db.getCollectionNames() |
| Detail tiap collection | — | db.getCollectionInfos() |
show dbsmenampilkan nama dan ukuran database;show tablesadalah aliasshow collections.listDatabasesadalah command resmi yang dijalankan lewatadmindatabase — hasilnya bisa diolah sebagai document biasa.getCollectionNames()untuk nama saja;getCollectionInfos()untuk detail type, options, uuid, dan index_id.- Urutan hasil tidak dijamin; jangan tulis logika yang bergantung pada urutan daftar.