Saturday 22 June 2019

Cara Join 2 Collection di MongoDB & NodeJs dengan Mongoose

Cara melakukan join 2 collection di mongodb dengan node js mongoose - Halo teman-teman! Selamat datang kembali di artikel TB kali ini.

Pada kesempatan kali ini, saya akan memberi tutorial seputar database nosql yang sedang populer dikalangan programmer modern, yaitu mongodb.
Sesuai judul, artikel kali ini akan membahas tentang cara melakukan join 2 collection dengan mongo db.

Join adalah proses penggabungan 2 collection atau lebih menjadi satu objek json. Hal ini ada kaitannya dengan relasi database. Mungkin jika di sql kita bisa menggunakan perintah INNER JOIN, LEFT JOIN, atau RIGHT JOIN. Tetapi di mongodb, kita harus menggunakan function satu per satu menggunakan perintah javascript.

Baca Juga: Cara Melakukan Spesific Select Dengan Node Js & MongoDB

Berikut ini cara melakukan join 2 collection mongodb dengan node js dan mongoose

Saya anggap database mongodb sudah terkoneksi dengan aplikasi node js kalian ya..

Sebelumnya, kita akan tetapkan pemanggilan mongoose di node_modules secara global.

const mongoose = require('mongoose')

Misal, kita mempunyai 2 Collection bernama employers dan positions

Berikut ini adalah Schema masing-masing collection

1. employers
const EmployerSchema = mongoose.Schema({
  name:String,
  position_name:{type: mongoose.Schema.Types.ObjectId, ref: 'position'} 
})

2. positions
const PositionSchema = mongoose.Schema({
  name:String,
})

Silahkan isi value dari masing-masing collection secara manual. Bisa menggunakan cmd mongodb ataupun juga bisa menggunakan mongodb compass. Yang penting collection yang sudah dibuat tadi memiliki value agar mempermudah proses testing. Syaratnya adalah position_name di collection employers harus sama dengan _id di collection positions (sebagai patokan relasi data)

Perhatikan tulisan yang saya beri font berwarna merah pada Schema employers.
kita memiliki sebuah key bernama position_name. Itu adalah key yang kita buat. Sedangkan untuk font yang saya cetak berwarna merah dengan highlight kuning itu adalah nama collection lain yang akan kita lakukan join dan dimasukan kedalam key position_name.

Untuk type dari key, wajib dimasukan mongoose.Schema.Types.ObjectId sebagai acuan seleksi dalam collection. Kalau teman-teman pernah bermain SQL, hal ini sama dengan perintah ON pada INNER JOIN sql

Mungkin teman-teman bertanya, kan nama collectionnya positions, kok kita tulisnya nama collectionnya position?
Jadi mongodb dan mongoose telah melakukan plurality dalam collection yang ada dengan program yang ditulis. Jadi jika kita menulis position, maka otomatis kita memilih collection positions, employer menjadi employers, category menjadi categories, dan lain sebagainya.

Sekarang pastikan bahwa kedua schema dari collection tersebut berjalan dalam satu file. Bisa ditulis langsung, ataupun jika file schema terpisah bisa dipanggil dengan require().

Lanjut...

Setelah itu, kita masukan schema tersebut kedalam model mongodb.

const EmployerModel = mongoose.model('employer', EmployerSchema)
mongoose.model('position', PositionSchema)

Sekarang kita akan menampilkan hasil dari join 2 collection tersebut.

Saya anggap kalian sudah berhasil melakukan routing dengan cara kalian masing masing. Bisa pakai express, vue-router, react-router, atau apa saja. Yang penting didalam route harus berisi kode berikut ini.

EmployerModel.find().populate('position_name').exec((err,data)=>{
    res.send(data)
  })

Perhatikan tulisan berwarna merah. Function populate() berisi nama key di dalam collection employers yang telah dijoin kan dengan collection lain.

Lalu cek halaman url route nya. Disini saya atur urlnya /api/employers (tergantung cara routing kalian)

Berikut ini hasilnya...


Itulah cara melakukan join multiple collection di mongodb. Semoga artikel ini bermanfaat! Jika ada yang kurang jelas atau pertanyaan lain, silahkan tinggalkan komentar! Terima kasih!

0 komentar

Post a Comment

Hai, Mohon Komentar Yang Relevan Dan Tidak OOT!