Sejauh ini kita berinteraksi dengan MongoDB lewat mongosh — praktis untuk eksplorasi, tetapi aplikasi produksi butuh driver yang berjalan di dalam kode program. Untuk Python, driver resminya bernama PyMongo: pustaka sinkron yang menerjemahkan operasi find, insert, hingga aggregation menjadi panggilan method Python biasa. Chapter ini menyiapkan lingkungan kerja kita: memasang PyMongo di virtual environment, memverifikasi instalasinya, lalu mengenali paket-paket di sekitarnya.

Persyaratan dan Virtual Environment #

PyMongo 4.19 membutuhkan Python 3.11 atau lebih baru — versi yang lebih lama tidak bisa memasang rilis ini. Praktik yang disarankan adalah mengisolasi dependensi proyek lewat virtual environment, agar setiap proyek memiliki salinan pymongo versinya sendiri dan tidak saling menimpa. Kita buat venv baru lalu pasang paketnya:

bash
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install pymongo

Di Windows, baris aktivasi diganti .venv\Scripts\activate. Perintah python3 -m pip sengaja dipakai agar pip yang terpakai pasti milik interpreter yang sedang aktif, bukan milik sistem operasi.

Output yang Dihasilkan:

text
Collecting pymongo
  Downloading pymongo-4.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (10 kB)
Collecting dnspython<3.0.0,>=2.7.0 (from pymongo)
  Downloading dnspython-2.9.0-py3-none-any.whl.metadata (5.7 kB)
Downloading pymongo-4.19.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.1 MB)
Downloading dnspython-2.9.0-py3-none-any.whl (354 kB)
Installing collected packages: dnspython, pymongo
Successfully installed dnspython-2.9.0 pymongo-4.19.0

Dua baris terakhir itulah yang penting: pymongo 4.19.0 terpasang, dan pip ikut memasang dnspython sebagai dependensi wajib PyMongo modern (nama berkas unduhan .whl berbeda-beda menurut sistem operasi; angka versi dnspython bisa sedikit lebih baru).

Verifikasi Instalasi #

Jangan percaya instalasi sebelum terbukti. Program kecil berikut memeriksa tiga lapisan sekaligus: versi Python yang berjalan, versi PyMongo yang terimpor, dan koneksi sungguhan ke server MongoDB lokal kita. Simpan sebagai cek_instalasi.py:

python
import os
import sys

import pymongo
from pymongo import MongoClient

URI = os.environ.get(
    "MONGODB_URI", "mongodb://127.0.0.1:27017/?directConnection=true"
)

print("Versi Python  :", sys.version.split()[0])
print("Versi PyMongo :", pymongo.version)
print("Ekstensi C    :", "aktif" if pymongo.has_c() else "tidak aktif")

client = MongoClient(URI, serverSelectionTimeoutMS=5000)
print("Ping server   :", client.admin.command("ping")["ok"])
print("Versi server  :", client.server_info()["version"])
client.close()

Jalankan dengan python3 cek_instalasi.py. Address server diambil dari environment variable MONGODB_URI bila ada — pola yang kita pakai konsisten di seluruh Section ini agar contoh bisa diarahkan ke server mana pun tanpa mengubah kode.

Output yang Dihasilkan:

text
Versi Python  : 3.12.15
Versi PyMongo : 4.19.0
Ekstensi C    : aktif
Ping server   : 1.0
Versi server  : 9.0.2

Mari kita bedah baris-baris pentingnya:

  1. import pymongo — modul inti; pymongo.version menyimpan versi paket sebagai string, dan pymongo.has_c() melaporkan apakah ekstensi C terpasang. Ekstensi C mempercepat proses encode/decode BSON, dan keluaran aktif berarti performa terbaik tersedia.
  2. from pymongo import MongoClient — kelas pintu masuk ke server; kita bahas tuntas di Chapter Membuat Koneksi Database.
  3. client.admin.command("ping")["ok"] — mengirim perintah ping ke database admin dan membaca field ok dari balasannya; nilai 1.0 berarti server merespons.
  4. client.server_info()["version"] — meminta informasi server; di sini terbaca 9.0.2, sehingga kita tahu driver dan server saling cocok.
  5. client.close() — menutup koneksi secara eksplisit; kebiasaan yang menjaga sumber daya tetap rapi.

Dependensi dan Paket Terkait #

PyMongo adalah keluarga paket, bukan pahlawan tunggal. Tabel ini memetakan perannya:

PaketCara pasangPeran
pymongopython3 -m pip install pymongoDriver resmi sinkron — fokus Section ini
dnspythonterpasang otomatis bersama pymongoresolusi DNS; wajib agar connection string mongodb+srv:// berfungsi
motorpython3 -m pip install motordriver async yang dibangun di atas PyMongo, untuk aplikasi asyncio/FastAPI

Paket dnspython perlu dicermati: connection string bertipe mongodb+srv:// (umum di MongoDB Atlas) menyandikan daftar server dalam record DNS SRV, dan resolusinya ditangani dnspython. Karena kini menjadi dependensi wajib, pola mongodb+srv:// langsung berfungsi tanpa langkah tambahan. Adapun motor membebaskan thread aplikasi saat menunggu I/O jaringan dengan memakai async/await; sintaks filter dan operasinya sama dengan PyMongo karena keduanya berbagi implementasi yang sama.

Rangkuman #

  • PyMongo 4.19 membutuhkan Python 3.11+; pasang di dalam virtual environment dengan python3 -m pip install pymongo.
  • pymongo.version dan pymongo.has_c() memverifikasi paket; ping dan server_info() memverifikasi jalur ke server.
  • dnspython terpasang otomatis dan mengaktifkan connection string mongodb+srv://.
  • Untuk aplikasi async (asyncio, FastAPI), pakai motor yang berdiri di atas PyMongo.
  • Simpan versi di requirements.txt agar lingkungan tim konsisten.

Lingkungan siap. Chapter berikutnya membuka koneksi pertama kita dan membedah perilaku MongoClient yang ternyata malas — dalam arti yang baik.