Semua komponen telah terpasang: mongod berjalan, mongosh dikenali, dan connection string sudah dipahami. Sebelum melangkah ke materi inti Course, kita jalankan satu rangkaian pemeriksaan terakhir yang menyatukan semuanya — dari versi binary, respons server, topologi, sampai putaran tulis-baca-bereskan data yang sesungguhnya. Rangkaian ini sekaligus menjadi latihan pertama kita menjalankan perintah MongoDB dari ujung ke ujung.

Pemeriksaan yang akan kita lewati:

  • Versi mongod dari terminal dan dari dalam shell.
  • Respons ping serta identitas server lewat hello.
  • Daftar database yang ada di server.
  • Satu siklus insertOne() → findOne() → dropDatabase().

Memeriksa Versi mongod #

Mulai dari luar shell. Perintah berikut memastikan binary server dikenali sistem dan melaporkan versinya:

bash
mongod --version

Output yang Dihasilkan:

text
db version v9.0.2
Build Info: {
    "version": "9.0.2",
    "gitVersion": "c4d309807b94ac30edcca32e35e88a9598eadfc8",
    "openSSLVersion": "OpenSSL 3.5.7 9 Jun 2026",
    "modules": [],
    "allocator": "tcmalloc-google",
    "javascriptEngine": "mozjs-wasm",
    "environment": {
        "distmod": "debian13",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

Baris pertama (db version v9.0.2) adalah yang paling penting: Course ini ditulis dan diuji pada MongoDB 9.0, sehingga hasil serupa menandakan lingkungan kita sejalan dengan seluruh contoh berikutnya. Blok Build Info di bawahnya merinci versi library dan arsitektur binary — nilainya boleh berbeda sesuai platform instalasi.

Ping, Versi, dan Topologi dari Shell #

Sekarang dari dalam mongosh. Perintah ping adalah cara termurah memastikan server merespons:

js
db.adminCommand({ ping: 1 })

Output yang Dihasilkan:

text
{
  ok: 1,
  '$clusterTime': {
    clusterTime: Timestamp({ t: 1792243653, i: 1 }),
    signature: {
      hash: Binary.createFromBase64('AAAAAAAAAAAAAAAAAAAAAAAAAAA=', 0),
      keyId: Long('0')
    }
  },
  operationTime: Timestamp({ t: 1792243653, i: 1 })
}

Field ok: 1 adalah tanda perintah berhasil; field clusterTime dan operationTime adalah cap waktu replikasi yang nilainya berubah pada setiap eksekusi. Lanjut ke versi server dan identitasnya:

js
db.version()

Output yang Dihasilkan:

text
9.0.2
js
db.hello()

Output yang Dihasilkan:

text
{
  topologyVersion: { processId: ObjectId('6ad372929d08d4e3fde1a38f'), counter: Long('6') },
  hosts: [ '127.0.0.1:27017' ],
  setName: 'rs0',
  setVersion: 1,
  isWritablePrimary: true,
  secondary: false,
  primary: '127.0.0.1:27017',
  me: '127.0.0.1:27017',
  electionId: ObjectId('7fffffff0000000000000008'),
  lastWrite: {
    opTime: { ts: Timestamp({ t: 1792243653, i: 1 }), t: Long('8') },
    lastWriteDate: ISODate('2026-10-17T13:27:33.000Z'),
    majorityOpTime: { ts: Timestamp({ t: 1792243653, i: 1 }), t: Long('8') },
    majorityWriteDate: ISODate('2026-10-17T13:27:33.000Z')
  },
  maxBsonObjectSize: 16777216,
  maxMessageSizeBytes: 48000000,
  maxWriteBatchSize: 100000,
  localTime: ISODate('2026-10-17T13:27:38.637Z'),
  logicalSessionTimeoutMinutes: 30,
  connectionId: 137,
  minWireVersion: 0,
  maxWireVersion: 29,
  readOnly: false,
  ok: 1,
  '$clusterTime': {
    clusterTime: Timestamp({ t: 1792243653, i: 1 }),
    signature: {
      hash: Binary.createFromBase64('AAAAAAAAAAAAAAAAAAAAAAAAAAA=', 0),
      keyId: Long('0')
    }
  },
  operationTime: Timestamp({ t: 1792243653, i: 1 })
}

Dokumen hello adalah kartu identitas server. Tiga field teratas yang perlu kita cermati: isWritablePrimary: true berarti server menerima operasi tulis, setName: 'rs0' menandakan server ini anggota replica set bernama rs0, dan hosts memuat daftar anggotanya — dalam kasus kita satu node di 127.0.0.1:27017. Bila server kita berjalan standalone (tanpa replSetName), field setName dan hosts tidak akan muncul; keduanya hanya dimiliki anggota replica set. Field lain seperti maxBsonObjectSize melaporkan batas teknis protokol, sementara localTime adalah jam server saat menjawab.

Melihat Daftar Database #

Pemeriksaan berikutnya: melihat isi server dari luar:

js
show dbs

Output yang Dihasilkan:

text
admin       80.00 KiB
config     228.00 KiB
echo_test   40.00 KiB
local      428.00 KiB

Tiga nama yang selalu ada pada instalasi baru adalah admin (menyimpan pengguna dan peran), config (metadata, termasuk konfigurasi replica set), dan local (data internal node seperti oplog). Nama echo_test pada keluaran di atas adalah bekas database uji pada server yang dipakai menulis Course ini — bukti bahwa daftar ini mengikuti riwayat pemakaian server. Ukuran setiap database juga berubah mengikuti jumlah datanya.

Uji Tulis dan Baca #

Pemeriksaan versi membuktikan server bisa bicara; pemeriksaan ini membuktikan server bisa bekerja. Kita akan membuat database latihan, menyimpan satu document, membacanya kembali, lalu membersihkan jalannya. Mulai dengan memilih database:

js
use latihan_verifikasi

Output yang Dihasilkan:

text
switched to db latihan_verifikasi

Perintah use mengalihkan database aktif ke latihan_verifikasi — database ini dibuat otomatis begitu kita menulis data pertama ke dalamnya. Sekarang simpan satu document ke collection peserta:

js
db.peserta.insertOne({ nama: "Budi", level: "pemula" })

Output yang Dihasilkan:

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

Bedah singkat hasilnya: acknowledged: true berarti server mengonfirmasi penyimpanan, dan insertedId memuat _id yang dibuat otomatis karena kita tidak menyertakannya — nilai unik tersebut berbeda pada setiap eksekusi. Buktikan bahwa data benar-benar tersimpan dengan membacanya kembali:

js
db.peserta.findOne()

Output yang Dihasilkan:

text
{
  _id: ObjectId('6ad377ca2919fa3d7374eab2'),
  nama: 'Budi',
  level: 'pemula'
}

findOne() mengembalikan document pertama yang ditemukan, lengkap dengan field _id yang sama seperti hasil insertOne — putaran tulis lalu baca telah sukses. Karena database kini berisi data, show dbs mulai menghitungnya:

js
show dbs

Output yang Dihasilkan:

text
admin                80.00 KiB
config              228.00 KiB
echo_test            40.00 KiB
latihan_verifikasi    8.00 KiB
local               428.00 KiB

latihan_verifikasi muncul dengan ukuran kecil — persis seperti dijelaskan sebelumnya bahwa database baru terdaftar setelah menampung data. Sebagai penutup, hapus database latihan ini:

js
db.dropDatabase()

Output yang Dihasilkan:

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

Nilai dropped: 'latihan_verifikasi' mengonfirmasi nama database yang dihapus. Setelah perintah ini, show dbs kembali menampilkan database bawaan saja.

Rangkuman #

Rangkaian pemeriksaan lengkap pada Chapter ini bisa dirangkum menjadi tabel siap pakai:

PemeriksaanPerintahHasil yang diharapkan
Binary server dikenalimongod --versiondb version v9.0.x
Server meresponsdb.adminCommand({ ping: 1 })ok: 1
Versi serverdb.version()9.0.x
Topologi dan hak tulisdb.hello()isWritablePrimary: true
Isi servershow dbsadmin, config, local
Siklus tulis-bacainsertOne() lalu findOne()acknowledged: true, document kembali
Pembersihandb.dropDatabase()dropped: 'latihan_verifikasi'

Bila seluruh baris di atas lolos, lingkungan kita siap untuk seluruh Course: server sehat, shell terhubung, dan jalur data berfungsi dua arah. Section berikutnya mulai menyelami inti MongoDB — database, collection, dan document.