Cara menggunakan can laravel use mongodb?

Indonesian (Bahasa Indonesia) translation by AaliyaA (you can also view the original English article)

Selama bertahun-tahun, MongoDB telah menjadi NoSQL database baik untuk individu maupun perusahaan yang membangun aplikasi berskala besar. Ini open source, easily scalable, dan provides high availability. Ini juga mendukung query yang sangat kompleks dan kontrol konkurensi halus.

Namun, tugas-tugas yang diperlukan seperti menginstal database, menyetelnya untuk mempertahankan kinerja yang optimal dalam jangka waktu yang lama, dan mengamankannya cenderung membutuhkan banyak upaya yang terampil dan berdedikasi.

Untungnya, ada alternatif yang lebih mudah: MongoDB Atlas, versi cloud yang dikelola sepenuhnya, dari database.

Dengan MongoDB Atlas, Anda dapat membuat MongoDB cluster pada cloud provider utama apa pun pilihan Anda dan mulai menggunakan cluster tersebut dalam hitungan menit. Menggunakan Atlas's browser-based user interface, Anda juga dapat secara intuitif mengkonfigurasi cluster dan memantau kinerjanya.

Dalam tutorial ini, saya akan menunjukkan cara membuat MongoDB Atlas free tier cluster dan menggunakannya dalam Python application.

Prasyarat

Sebelum melanjutkan, pastikan Anda telah menginstal dan mengonfigurasi berikut di komputer Anda:

  • Python 3.4 atau lebih tinggi
  • pip 18.0 atau lebih tinggi

1. Membuat Cluster

Untuk dapat menggunakan MongoDB's cloud services, Anda memerlukan akun MongoDB Atlas. Untuk membuatnya, buka home page dan tekan tombol Get started free.

Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?

Setelah Anda melengkapi formulir pendaftaran singkat, Anda akan dialihkan ke panduan pembuatan cluster. Di bagian pertama, Anda harus memilih cloud provider dan wilayah yang Anda sukai.

Untuk meminimalkan latensi jaringan, Anda sebaiknya memilih wilayah yang paling dekat dengan komputer Anda. Untuk saat ini, bagaimanapun, karena kita membuat free tier cluster, pastikan wilayah yang Anda pilih adalah salah satu yang memiliki free tier available. Selain itu, jika Anda menggunakan Google Cloud VM atau Amazon EC2 instance sebagai development environment Anda, pilih corresponding cloud provider terlebih dahulu.

Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?

Di bagian Cluster Tier, pilih opsi M0 untuk membuat cluster tingkat gratis Anda. Ini menawarkan 512 MB storage space, versi terbaru MongoDB dengan WiredTiger sebagai storage engine, satu set replika dari tiga node, dan 10 GB bandwidth per minggu.

Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?

Terakhir, berikan nama yang mudah untuk cluster dan tekan tombol Create Cluster.

Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?

MongoDB Atlas sekarang akan memakan waktu sekitar lima menit untuk menyiapkan cluster Anda.

2. Mengkonfigurasi Cluster

Sebelum Anda mulai menggunakan cluster, Anda harus memberikan beberapa detail terkait keamanan, jadi alihkan ke Security tab.

Pertama, di bagian MongoDB Users, Anda harus membuat user baru untuk diri sendiri dengan menekan tombol Add new user. Pada dialog yang muncul, ketik nama user dan kata sandi yang Anda inginkan, pilih Read and write to any database apa saja, dan tekan tombol Add User.

Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?

Selanjutnya, di bagian IP Whitelist section, Anda harus memberikan daftar alamat IP dari mana Anda akan mengakses cluster. Untuk saat ini, memberikan alamat IP komputer Anda saat ini sudah cukup.

Tekan tombol Add IP address untuk membuat entri alamat IP baru. Pada dialog yang muncul, tekan tombol Add current IP address untuk mengisi otomatis Whitelist Entry field. Selain itu, jika Anda tidak memiliki alamat IP statis, ada baiknya untuk menandainya sebagai entri sementara dengan mencentang opsi Save as temporary whitelist. Akhirnya, tekan Confirm untuk menambahkan entri.

Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?

3. Memperoleh String Koneksi

Anda akan memerlukan string koneksi yang valid untuk terhubung ke cluster Anda dari aplikasi Anda. Untuk mendapatkannya, pergi ke tab Overview dan tekan tombol Connect.

Pada dialog yang terbuka, pilih opsi Connect Your Application dan tekan tombol I'm using driver 3.6 or later. Sekarang Anda seharusnya dapat melihat string koneksi Anda. Itu tidak akan memiliki kata sandi Anda yang sebenarnya, jadi Anda harus memasukkannya secara manual. Setelah Anda melakukannya, buat catatan string sehingga Anda dapat menggunakannya nanti.

Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?

4. Menginstal Python Driver

Agar dapat berinteraksi dengan cluster MongoDB Atlas Anda secara terprogram, Anda harus memiliki MongoDB driver yang diinstal di komputer Anda. Untuk bahasa pemrograman Python, PyMongo adalah driver paling populer yang tersedia saat ini. Cara yang disarankan untuk menginstalnya di komputer Anda adalah dengan menggunakan modul pip seperti yang ditunjukkan di bawah ini:

python3 -m pip install pymongo --user

Anda mungkin telah memperhatikan bahwa string koneksi MongoDB Atlas Anda adalah mongodb + srv: // URI. Untuk mengaktifkan driver agar bekerja dengan catatan SRV DNS, Anda juga harus menginstal modul dnspython. Begini caranya:

python3 -m pip install dnspython --user

5. Menghubungkan ke Cluster

Anda sekarang dapat menggunakan cluster MongoDB Anda dari aplikasi Python apa pun. Untuk mengikuti saya, buat script Python baru dan buka menggunakan editor kode apa pun.

Di dalam script, untuk dapat berinteraksi dengan cluster, Anda memerlukan instance dari kelas MongoClient. Sebagai satu-satunya argumen untuk konstruktornya, lewati string koneksi Anda.

import pymongo

my_client = pymongo.MongoClient(
    'mongodb+srv://alice:/test?retryWrites=true'
)

Konstruktor di atas segera kembali dan tidak akan menimbulkan kesalahan apa pun. Oleh karena itu, untuk memeriksa apakah Anda telah berhasil membuat sambungan, saya sarankan Anda mencoba melakukan operasi pada cluster. Panggilan ke metode server_info (), yang memberikan Anda berbagai rincian tentang instance MongoDB Anda, akan cukup.

Jika tidak ada kesalahan dalam string koneksi Anda, panggilan ke metode server_info () akan berhasil. Namun, jika nama pengguna atau kata sandi yang Anda tentukan salah, Anda akan mengalami kesalahan OperationFailure. Kode berikut menunjukkan cara menangkapnya:

try:
    print("MongoDB version is %s" % 
            my_client.server_info()['version'])
except pymongo.errors.OperationFailure as error:
    print(error)
    quit(1)

Sekarang Anda dapat melanjutkan dan mencoba menjalankan scrip tAnda.

Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?
Cara menggunakan can laravel use mongodb?

6. Memasukkan Dokumen

String koneksi default yang Anda dapatkan dari interface web MongoDB Atlas menyebutkan test bernama database. Mari terus menggunakan database yang sama. Beginilah cara Anda mendapatkan referensi untuk itu:

my_database = my_client.test

Database MongoDB terdiri dari satu atau lebih koleksi, yang tidak lain adalah kumpulan BSON documents (short for binary JSON). Free tier cluster Anda di MongoDB Atlas dapat memiliki maksimal 500 koleksi.

Demi contoh realistis, mari buat koleksi baru yang diberi nama foods. Dengan PyMongo, Anda tidak perlu secara eksplisit memanggil metode apa pun untuk melakukannya. Anda cukup mereferensikannya seolah-olah sudah ada.

my_collection = my_database.foods

Perlu disebutkan bahwa kode di atas tidak segera membuat foods collection. Ini dibuat hanya setelah Anda menambahkan dokumen ke sana. Jadi, mari sekarang buat dan tambahkan dokumen baru yang berisi data nutrisi tentang item makanan.

Menggunakan metode insert_one () adalah cara paling sederhana untuk menambahkan dokumen ke koleksi. Untuk menentukan isi dokumen, Anda mengirimkan Python dictionary ke metode. Kode contoh berikut menunjukkan caranya:

my_collection.insert_one({
    "_id": 1,
    "name": "pizza",
    "calories": 266,
    "fats": {
        "saturated": 4.5,
        "trans": 0.2
    },
    "protein": 11
})

Menambahkan dokumen satu per satu bisa menjadi tidak efisien. Dengan metode insert_many (), Anda dapat menambahkan beberapa dokumen ke koleksi Anda sekaligus. Ia mengharapkan array dictionaries sebagai inputnya. Kode berikut menambahkan dua dokumen lagi ke koleksi:

my_collection.insert_many([
    {
        "_id": 2,
        "name": "hamburger",
        "calories": 295, "protein": 17,
        "fats": { "saturated": 5.0, "trans": 0.8 },
    },
    {
        "_id": 3,
        "name": "taco",
        "calories": 226, "protein": 9,
        "fats": { "saturated": 4.4, "trans": 0.5 },
    }
])

Bidang _id yang Anda lihat dalam dokumen di atas adalah bidang yang digunakan sebagai kunci utama oleh MongoDB. Dengan demikian, itu tidak dapat diubah dan harus ada di semua dokumen MongoDB. Jika Anda lupa untuk memasukkannya saat membuat dokumen Anda, PyMongo akan menambahkannya untuk Anda secara otomatis dan menetapkan nilai unik yang dihasilkan secara otomatis untuk itu.

7. Running Queries

Saat Anda menambahkan beberapa dokumen ke koleksi Anda, Anda dapat menjalankan queries dengan memanggil metode find (), yang mengembalikan objek Cursor yang dapat Anda ulas. Jika Anda tidak menyampaikan argumen apa pun, find mengembalikan semua dokumen dalam koleksi.

Kode berikut menunjukkan kepada Anda cara mencetak nama semua item makanan yang ada dalam koleksi kita:

my_cursor = my_collection.find()

for item in my_cursor:
    print(item["name"])

# Output is:
#   pizza
#   hamburger
#   taco

Jika Anda ingin metode find () mengembalikan hanya dokumen-dokumen yang sesuai dengan kriteria tertentu, Anda harus mengirimkan Python dictionary kepadanya. Misalnya, jika Anda ingin menemukan dokumen yang bidang name disetel ke "pizza", Anda dapat menggunakan kode berikut:

my_cursor = my_collection.find({
    "name": "pizza"
})

Untuk pertanyaan yang lebih kompleks, Anda dapat menggunakan MongoDB's intuitively named query operators dalam kamus yang Anda berikan ke metode find (). Sebagai contoh, kode berikut menunjukkan kepada Anda bagaimana menggunakan operator $ lt untuk menemukan dokumen dengan bidang calories yang diatur ke nilai yang kurang dari 280:

my_cursor = my_collection.find({
    "calories": { "$lt": 280 }
})

for item in my_cursor:
    print("Name: %s, Calories: %d" % 
        (item["name"], item["calories"]))

# Output is:
#   Name: pizza, Calories: 266
#   Name: taco, Calories: 226

Dengan menggunakan notasi titik, Anda juga dapat menggunakan bidang berlapis di querie Anda. Kode berikut menunjukkan kepada Anda bagaimana menemukan dokumen whose trans field, yang berada di dalam fats field, ditetapkan ke nilai yang lebih besar atau sama dengan 0,5:

my_cursor = my_collection.find({
    "fats.trans": { "$gte": 0.5 }
})

for item in my_cursor:
    print("Name: %s, Trans fats: %.2f" % 
        (item["name"], item["fats"]["trans"]))

# Output is:
#   Name: hamburger, Trans fats: 0.80
#   Name: taco, Trans fats: 0.50

8. Memperbarui dan Menghapus Dokumen

Sangat mirip dengan metode insert_one () dan insert_many () adalah metode update_one () dan update_many (), yang dapat Anda gunakan untuk mengubah isi dokumen yang sudah ada di dalam koleksi Anda. Baik metode pembaruan, selain data baru, membutuhkan query untuk membidik pada dokumen yang perlu diubah.

Anda dapat menggunakan berbagai operator pembaruan dalam metode pembaruan Anda. Yang paling umum digunakan adalah $ set, yang memungkinkan Anda menambahkan bidang baru atau memperbarui nilai dari bidang yang ada. Kode berikut menunjukkan cara menambahkan dua bidang baru bernama fiber dan sugar ke dokumen yang name field disetel ke "taco":

my_collection.update_one(
    { "name": "taco" }, # query
    {
        "$set": {       # new data
            "fiber": 3.95,
            "sugar": 0.9
        }
    }
)

Jika query yang Anda berikan ke metode update_one () mengembalikan lebih dari satu dokumen, hanya dokumen pertama yang diperbarui. Metode update_many () tidak memiliki batasan ini.

Terakhir, dengan menggunakan metode delete_one () dan delete_many (), Anda dapat menghapus dokumen dalam koleksi Anda. Kedua metode membutuhkan query untuk menentukan dokumen mana yang perlu dihapus. Beginilah cara Anda dapat menghapus semua dokumen yang calories field diatur ke nilai yang kurang dari 300:

my_collection.delete_many({
    "calories": {
        "$lt": 300
    }
})

# Deletes all the three documents

Kesimpulan

Jika Anda seorang pengembang aplikasi web atau seluler yang ingin menggunakan MongoDB untuk menyimpan data, layanan MongoDB Atlas adalah untuk Anda. Ini memungkinkan Anda fokus mengembangkan aplikasi Anda daripada mengkhawatirkan detail seperti keamanan, kinerja, dan kepatuhan terhadap praktik terbaik. Dalam tutorial ini, Anda belajar cara membuat MongoDB cluster menggunakan layanan, menyambung ke sana, dan melakukan operasi baca dan tulis dasar di atasnya.

Untuk mempelajari lebih lanjut tentang MongoDB Atlas, Anda dapat merujuk ke official documentation..