Menghubungkan MongoDB dengan R

Package

Package mongolite adalah MongoDB client untuk R yang berbasis mongo-c-driver dan jsonlite. Package ini mendukung fungsi agregasi, indexing, map-reduce, streaming, enkripsi, autentikasi, serta GridFS.

library(mongolite)

Dataset MongoDB

MongoDB Atlas telah menyediakan kumpulan dataset yang dapat digunakan sebagai bahan pembelajaran. Berikut adalah dataset yang dapat digunakan dan deskripsinya

Dataset Deskripsi
Sample AirBNB Listings Dataset Detail mengenai listing AirBNB
Sample Analytics Dataset Data pelatihan aplikasi jasa keuangan
Sample Geospatial Dataset Data kapal karam dan lokasinya
Sample Mflix Dataset Data tentang film
Sample Restaurants Dataset Data tentang restoran
Sample Supply Store Dataset Data pelatihan toko
Sample Training Dataset Data pelatihan MongoDB
Sample Weather Dataset Detail laporan cuaca

Menyambungkan Database MongoDB ke R

Berikut adalah syntax untuk load dataset yang tersedia di MongoDB ke R. Pertama, ubah username, password, dan cluster name sesuai dengan yang telah dibuat pada akun mongoDB.

Data yang akan digunakan sebagai contoh adalah collection restaurant pada database sample_restaurants

# This is the connection_string. You can get the exact url from your MongoDB cluster screen
connection_string = 'mongodb+srv://<username>:<password>@<cluster-name>.<code>.mongodb.net/sample_training'
trips_collection = mongo(collection="restaurants",
                         db="sample_restaurants",
                         url=connection_string)

Query Data

Setelah data terhubung, dapat dilakukan beberapa query. Sebagai contoh akan dilihat banyaknya restaurant berdasarkan wilayah

query_res = res_collection$aggregate('[{"$group":
                                           {"_id":"$borough",
                                           "Count": {"$sum":1}
                                           }}]')

dan berikut adalah hasil dari query tersebut

query_res
##             _id Count
## 1      Brooklyn  6086
## 2         Bronx  2338
## 3        Queens  5656
## 4       Missing    51
## 5     Manhattan 10259
## 6 Staten Island   969

Visualisasi Data

Dari query yang sudah dilakukan, dapat dilakukan visualisasi sederhana dengan menggunakan barchart sebagai berikut

library(tidyverse)
library(lubridate)
library(ggplot2)

ggplot(query_res,
       aes(x=reorder(`_id`,Count),
           y=Count))+
  geom_bar(stat="identity",
           color='chocolate4',
           fill='chocolate4')+
  geom_text(aes(label = Count),
            color = "red")+
  coord_flip()+
  xlab("Wilayah")