2.2 Database MongoDB - Tutorial Aplikasi Presensi

2.2 Database MongoDB

Pengenalan MongoDB

MongoDB adalah database NoSQL yang menyimpan data dalam format dokumen JSON-like yang disebut BSON (Binary JSON). Berbeda dengan database SQL tradisional, MongoDB memiliki struktur yang lebih fleksibel dan mudah untuk dikembangkan seiring berkembangnya aplikasi.

Beberapa konsep dasar MongoDB yang perlu dipahami:

  • Document: Unit dasar data dalam MongoDB (mirip dengan row/record di SQL)

  • Collection: Kumpulan documents (mirip dengan table di SQL)

  • Database: Kontainer untuk collections

Membuat Database dan Collection

Untuk aplikasi presensi kita, kita akan membuat database bernama attendance_db dengan dua collection utama:

  • users: Menyimpan data pengguna

  • attendances: Menyimpan data presensi

// Buat koneksi ke MongoDB
use attendance_db

// Collections akan dibuat secara otomatis saat pertama kali 
// menyimpan document

Koneksi MongoDB dengan Mongoose

Mongoose adalah ODM (Object Data Modeling) library untuk MongoDB dan Node.js. Mari kita setup koneksi database:

  1. Install Mongoose:

  1. Buat file config/database.js:

Membuat Schema

User Schema

Buat file models/User.js:

Attendance Schema

Buat file models/Attendance.js:

CRUD Operations Dasar

Create (Membuat Data)

Read (Membaca Data)

Update (Memperbarui Data)

Delete (Menghapus Data)

Penggunaan dalam API

Contoh penggunaan dalam route Express:

Tips dan Best Practices

  1. Selalu gunakan try-catch untuk menangani error database

  2. Validasi data sebelum menyimpan ke database

  3. Gunakan index untuk optimasi query

  4. Jangan lupa untuk menutup koneksi database saat aplikasi berhenti

  5. Batasi data yang dikembalikan (projection) untuk menghemat bandwidth

  6. Gunakan populate dengan bijak karena dapat mempengaruhi performa

  7. Simpan password dalam bentuk hash, jangan plain text

  8. Gunakan timestamps untuk tracking waktu pembuatan/update document

Latihan

  1. Buat fungsi untuk mendapatkan laporan presensi bulanan

  2. Implementasikan fungsi search user berdasarkan nama atau email

  3. Buat fungsi untuk mendapatkan statistik kehadiran (hadir, terlambat, izin, etc.)

  4. Tambahkan validasi custom untuk format email

  5. Implementasikan soft delete untuk user dan attendance

Last updated

Was this helpful?