Tutorial NodeJS Part 13 : Join di MongoDB

Tutorial NodeJS Part 13 : Join di MongoDB
Join atau bisa diartikan sebagai gabungan 2 atau lebih komponen membentuh suatu kesatuan lain. Jika dilakukan join antara dua tabel maka kita mampu menghasilkan gabungan data baru. Hal serupa bisa dilakukan di MongoDB, jika di MySQL harus menggunakan foreign_key kemudian dilakukan relasi antar tabel ketika hendak melakukan join, maka di dalam MongoDB tidak perlu, hanya cukup memanggil field yang dijadikan foreign field.

Baca SebelumnyaTutorial NodeJS Part 12 : Update Data Di MongoDB

Sebagai contoh kita memiliki dua buah collection yaitu buku dan author. Setiap buku memiliki id_author sendiri yang bisa kita jadikan alat penanda _id author pada collection author. Daripada muter2 langsung aja kita praktekan, yang pertama kita akan menambahkan data pada collection author dan tambahkan field id_author

C:\Users\RSAM>cd ../../mongodb/bin

C:\mongodb\bin>mongo 127.0.0.1

> use perpustakaan
switched to db perpustakaan

> db.author.find()
{ '_id' : ObjectId('5e81f47997bcf42e684b5bea'), 'nama' : 'Kaka', 'email' : 'kaka@gmail.com', 'tanggal_lahir' : ISODate('2000-02-18T13:00:00Z') }

> db.buku.insert({ judul: 'Pemrograman Web', penerbit: 'mediainfo', id_author: ObjectId("5e81f47997bcf42e684b5bea") }, { judul: 'Algoritma Pemrograman', penerbit: 'gramedia', id_author: ObjectId("5e81f47997bcf42e684b5bea") })
WriteResult({ "nInserted" : 1 })

> db.buku.insert({ judul: 'Algoritma Pemrograman', penerbit: 'gramedia', id_author: ObjectId("5e81f47997bcf42e684b5bea") })
WriteResult({ "nInserted" : 1 })

Perhatikan perintah di atas db.author.find() copykan isi _id dan pastekan ke id_author di dalam collection buku.

Kita gunakan NodeJS sebagai alat join, buatlah file bernama join.js

C:\Users\RSAM\Documents\nodejs_tutorial\mongodb>vim join.js

Dan masukan script dibawah.

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://127.0.0.1:27017/";

MongoClient.connect(url, { useNewUrlParser: true },function(err, db) {
if (err) throw err;
var dbo = db.db("perpustakaan");
dbo.collection('author').aggregate([
{ $lookup:
{
from: 'buku',
localField: '_id',
foreignField: 'id_author',
as: 'details'
}
}
]).toArray(function(err, res) {
if (err) throw err;
console.log(JSON.stringify(res));
db.close();
});
});

Jalankan dengan perintah "node join"


C:\Users\RSAM\Documents\nodejs_tutorial\mongodb>node join

[
{
"_id":"5e81f47997bcf42e684b5bea",
"nama":"Kaka","email":"kaka@gmail.com",
"tanggal_lahir":"2020-02-18T13:00:00.000Z",
"details":
[
{
"_id":"5e81f789045ae5374da138be",
"judul":"Pemrograman Web",
"penerbit":"mediainfo",
"id_author":"5e81f47997bcf42e684b5bea"
},
{
"_id":"5e81f7a0045ae5374da138bf",
"judul":"Algoritma Pemrograman",
"penerbit":"gramedia",
"id_author":"5e81f47997bcf42e684b5bea"
}
]
}
]

LihatTutupKomentar