MongoDB - ObjectId: Panduan untuk Pemula

Hai teman-teman, para ahli basis data masa depan! Hari ini, kita akan memulai sebuah perjalanan menarik ke dunia MongoDB dan identifier uniknya: ObjectId. Jangan khawatir jika Anda baru dalam programming – saya akan menjadi panduan yang ramah, menjelaskan segala sesuatu secara langkah demi langkah. Jadi, ambil secangkir kopi, dan mari kita masuk ke dalamnya!

MongoDB - ObjectId

Apa Itu ObjectId?

Sebelum kita mulai membuat ObjectIds, mari kita pahami dulu apa itu ObjectIds. Bayangkan Anda sedang mengatur sebuah pustaka besar. Setiap buku perlu memiliki kode unik agar Anda dapat menemukannya dengan mudah. Itu tepat apa yang dilakukan ObjectId bagi dokumen MongoDB – memberikan setiap dokumen identifier unik.

Sebuah ObjectId adalah nilai 12-byte, terdiri dari:

  • 4-byte timestamp
  • 5-byte nilai acak
  • 3-byte counter yang dinaikkan

Sekarang, mari kita lihat bagaimana kita dapat bekerja dengan ObjectIds di MongoDB!

Membuat ObjectId Baru

Membuat ObjectId baru adalah sama mudahnya membuat sandwich (well, hampir saja). MongoDB secara otomatis menghasilkan ObjectId saat Anda memasukkan dokumen baru tanpa menentukan field _id. Tetapi, apa bila Anda ingin membuat satu sendiri? Mari kita lihat bagaimana!

from bson.objectid import ObjectId

# Buat ObjectId baru
new_id = ObjectId()

print(new_id)

Ketika Anda menjalankan kode ini, Anda akan melihat sesuatu seperti ini:

ObjectId('60d5ecb54f52a1b8c9a8e9d7')

Setiap kali Anda menjalankan kode ini, Anda akan mendapatkan ObjectId yang berbeda. Seperti salju – tidak ada dua yang sama!

Memahami Hasil Output

Mari kitauraikan apa yang kita lakukan:

  1. Kita mengimpor kelas ObjectId dari modul bson. (BSON adalah format biner yang digunakan MongoDB untuk menyimpan data.)
  2. Kita membuat ObjectId baru dengan memanggil ObjectId().
  3. Kita mencetak ObjectId baru.

String karakter yang Anda lihat adalah representasi heksadesimal dari ObjectId 12-byte kami. Keren, kan?

Membuat Timestamp Dokumen

Sekarang, mari kita menjadi penjelajah waktu! Kita dapat mengekstrak timestamp dari ObjectId untuk mengetahui kapan dokumen diciptakan. Ini sangat berguna saat Anda ingin melacak kapan data ditambahkan ke basis data Anda.

from bson.objectid import ObjectId
from datetime import datetime

# Buat ObjectId baru
new_id = ObjectId()

# Dapatkan timestamp
timestamp = new_id.generation_time

print(f"Dokumen ini diciptakan pada: {timestamp}")

Menjalankan kode ini mungkin akan memberikan Anda sesuatu seperti ini:

Dokumen ini diciptakan pada: 2023-06-21 15:30:45.000

Apa yang Terjadi Disini?

  1. Kita membuat ObjectId baru, seperti sebelumnya.
  2. Kita menggunakan atribut generation_time untuk mendapatkan timestamp.
  3. Kita mencetak pesan yang ramah dengan timestamp.

seperti ObjectId ini memiliki mesin waktu kecil di dalamnya, ingat kapan ia diciptakan!

Mengkonversi ObjectId ke String

kadang-kadang, Anda mungkin perlu mengkonversi ObjectId Anda ke string. Mungkin Anda mengirim data ke halaman web, atau Anda bekerja dengan sistem yang tidak mengenal ObjectIds. Tidak perlu khawatir – MongoDB menangani Anda!

from bson.objectid import ObjectId

# Buat ObjectId baru
new_id = ObjectId()

# Konversi ke string
id_string = str(new_id)

print(f"ObjectId: {new_id}")
print(f"String: {id_string}")

Ini akan menghasilkan sesuatu seperti ini:

ObjectId: 60d5ecb54f52a1b8c9a8e9d7
String: 60d5ecb54f52a1b8c9a8e9d7

Apa yang Kita Lakukan Baru-baru ini?

  1. Kita membuat ObjectId baru.
  2. Kita mengkonversi itu ke string menggunakan fungsi str().
  3. Kita mencetak baik ObjectId maupun versi stringnya.

Perhatikan bagaimana versi stringnya tampak seperti ObjectId, tetapi tanpa wrapper ObjectId()? Seperti menghapus kostum superhero – di bawahnya, tetap hero yang sama!

Bonus: Bekerja dengan ObjectIds dalam Query MongoDB

Sekarang kita sudah ahli ObjectIds, mari kita lihat bagaimana kita dapat menggunakannya dalam query MongoDB. Ini tempat magis sebenarnya terjadi!

from pymongo import MongoClient
from bson.objectid import ObjectId

# Terhubung ke MongoDB (asumsi itu berjalan di localhost)
client = MongoClient('mongodb://localhost:27017/')
db = client['my_database']
collection = db['my_collection']

# Sisipkan dokumen
result = collection.insert_one({'name': 'John Doe', 'age': 30})
inserted_id = result.inserted_id

print(f"Dokumen yang disisipkan dengan ID: {inserted_id}")

# Query dokumen menggunakan ObjectIdnya
found_document = collection.find_one({'_id': inserted_id})

print(f"Dokumen yang ditemukan: {found_document}")

Skrip ini akan menghasilkan sesuatu seperti ini:

Dokumen yang disisipkan dengan ID: 60d5ecb54f52a1b8c9a8e9d7
Dokumen yang ditemukan: {'_id': ObjectId('60d5ecb54f52a1b8c9a8e9d7'), 'name': 'John Doe', 'age': 30}

Memecahkan Hal ini

  1. Kita terhubung ke basis data dan koleksi MongoDB.
  2. Kita sisipkan dokumen baru dan mendapatkan ObjectIdnya.
  3. Kita menggunakan ObjectId itu untuk query basis data dan menemukan dokumen kita.

Itu seperti memberikan seseorang kunci unik ke lemari mereka – dengan ObjectId, kita selalu dapat menemukan dokumen kita di basis data MongoDB yang luas!

Kesimpulan

Dan begitu juga, teman-teman! Kita telah berpergian melalui negeri ObjectIds MongoDB, membuatnya, mengekstrak timestamps, mengkonversi ke string, dan bahkan menggunakannya dalam query. Ingat, ObjectIds adalah temanmu di dunia MongoDB – mereka membantu mengatur dan mengakses data Anda dengan mudah.

Sekarang, saat Anda terus melanjutkan petualangan MongoDB Anda, Anda akan menemukan ObjectIds muncul di mana-mana. Tetapi sekarang, dengan pengetahuan ini, Anda dapat menggunakannya seperti seorang pro!

Tetap berlatih, tetap curiga, dan selamat berkoding!

Metode Deskripsi
ObjectId() Membuat ObjectId baru
ObjectId.generation_time Mengembalikan timestamp saat ObjectId diciptakan
str(ObjectId) Mengkonversi ObjectId ke string
collection.insert_one() Menyisipkan dokumen ke dalam koleksi MongoDB dan mengembalikan ObjectId
collection.find_one({'_id': ObjectId}) Mencari dokumen di koleksi MongoDB menggunakan ObjectId

Ingat, di dunia MongoDB, ObjectIds adalah temanmu yang setia. Perlakukannya dengan baik, dan mereka akan melayani Anda setia dalam petualangan basis data Anda!

Credits: Image by storyset