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:

js
show dbs

Output yang Dihasilkan:

text
admin    80.00 KiB
config  392.00 KiB
local   524.00 KiB

Isi 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:

js
use latihan_shell
js
db.pembeli.insertOne({ nama: "Budi", kota: "Bandung" })
db.produk.insertOne({ nama: "Pensil", harga: 3000 })

Output yang Dihasilkan:

text
{
  acknowledged: true,
  insertedId: ObjectId('6ad37e5d9eb978165ae73984')
}
{
  acknowledged: true,
  insertedId: ObjectId('6ad37e5d9eb978165ae73985')
}

Sekarang daftarkan isinya:

js
show collections

Output yang Dihasilkan:

text
pembeli
produk

Alias 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():

js
db.adminCommand({ listDatabases: 1 })

Output yang Dihasilkan:

text
{
  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:

js
db.adminCommand({ listDatabases: 1, nameOnly: true })

Output yang Dihasilkan:

text
{
  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:

js
db.getCollectionNames()

Output yang Dihasilkan:

text
[ 'produk', 'pembeli' ]

Bentuk kedua memberi informasi lengkap per collection:

js
db.getCollectionInfos()

Output yang Dihasilkan:

text
[
  {
    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:

js
db.dropDatabase()

Output yang Dihasilkan:

text
{ ok: 1, dropped: 'latihan_shell' }

Rangkuman #

KebutuhanDi REPLPadanan program
Daftar databaseshow dbsdb.adminCommand({ listDatabases: 1 })
Daftar nama database saja—db.adminCommand({ listDatabases: 1, nameOnly: true })
Daftar collectionshow collectionsdb.getCollectionNames()
Detail tiap collection—db.getCollectionInfos()
  • show dbs menampilkan nama dan ukuran database; show tables adalah alias show collections.
  • listDatabases adalah command resmi yang dijalankan lewat admin database — 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.