MongoDB - ObjectId: A Panduan Pemula
Hai there, para ahli basisdata masa depan! Hari ini, kita akan memulai perjalanan yang menarik ke dalam dunia MongoDB dan pengenalannya yang unik: ObjectId. Jangan khawatir jika Anda baru dalam programming - saya akan menjadi panduan ramah Anda, menjelaskan segala sesuatu secara langkah demi langkah. Jadi, ambil secangkir kopi, dan mari kita masuk ke dalamnya!
Apa Itu ObjectId?
Sebelum kita mulai membuat ObjectIds, mari kita mengerti apa itu. Bayangkan Anda mengatur perpustakaan besar. Setiap buku perlu memiliki kode unik agar Anda dapat menemukannya dengan mudah. Itu persis apa yang dilakukan ObjectId bagi dokumen MongoDB - memberikan setiap dokumen pengenal unik.
Sebuah ObjectId adalah nilai 12-byte, terdiri dari:
- 4-byte timestamp
- 5-byte nilai acak
- 3-byte penghitung yang bertambah
Sekarang, mari kita lihat bagaimana kita dapat bekerja dengan ObjectIds dalam MongoDB!
Membuat ObjectId Baru
Membuat ObjectId baru adalah sama mudah seperti membuat sandwich (well, hampir). MongoDB secara otomatis membuat ObjectId ketika 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
# Membuat 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. Itu seperti salju - tidak ada dua yang sama!
Mengerti Hasil Keluaran
Mari kitauraikan apa yang kita lakukan:
- Kita mengimpor kelas
ObjectId
dari modulbson
. (BSON adalah format biner yang digunakan MongoDB untuk menyimpan data.) - Kita membuat ObjectId baru dengan memanggil
ObjectId()
. - 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 pengembara waktu! Kita dapat mengekstrak timestamp dari ObjectId untuk mengetahui kapan dokumen diciptakan. Ini sangat berguna ketika Anda ingin melacak kapan data ditambahkan ke basisdata Anda.
from bson.objectid import ObjectId
from datetime import datetime
# Membuat ObjectId baru
new_id = ObjectId()
# Mendapatkan timestamp
timestamp = new_id.generation_time
print(f"Dokumen ini diciptakan pada: {timestamp}")
Menjalankan kode ini mungkin memberikan Anda sesuatu seperti ini:
Dokumen ini diciptakan pada: 2023-06-21 15:30:45.000
Apa yang Terjadi disini?
- Kita membuat ObjectId baru, seperti sebelumnya.
- Kita menggunakan atribut
generation_time
untuk mendapatkan timestamp. - Kita mencetak pesan ramah dengan timestamp.
Itu seperti setiap ObjectId memiliki mesin waktu kecil di dalamnya, mengingat kapan ia lahir!
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 mengerti ObjectIds. Tidak perlu khawatir - MongoDB menangani Anda!
from bson.objectid import ObjectId
# Membuat 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 mengeluarkan sesuatu seperti ini:
ObjectId: 60d5ecb54f52a1b8c9a8e9d7
String: 60d5ecb54f52a1b8c9a8e9d7
Apa yang Kita Lakukan Baru-baru ini?
- Kita membuat ObjectId baru.
- Kita mengkonversinya ke string menggunakan fungsi
str()
. - Kita mencetak baik ObjectId maupun versi stringnya.
Perhatikan bagaimana versi string terlihat seperti ObjectId, tapi tanpa wrapper ObjectId()
? Itu seperti menghapus kostum superhero - di bawahnya, itu masih tetap pahlawan yang sama!
Bonus: Bekerja dengan ObjectIds dalam Query MongoDB
Sekarang kita ahli ObjectId, mari kita lihat bagaimana kita dapat menggunakan mereka dalam query MongoDB. Ini adalah tempat magi sebenarnya terjadi!
from pymongo import MongoClient
from bson.objectid import ObjectId
# Menyambungkan ke MongoDB (asumsi ia berjalan di localhost)
client = MongoClient('mongodb://localhost:27017/')
db = client['my_database']
collection = db['my_collection']
# Menyisipkan 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 mengeluarkan sesuatu seperti ini:
Dokumen yang disisipkan dengan ID: 60d5ecb54f52a1b8c9a8e9d7
Dokumen yang ditemukan: {'_id': ObjectId('60d5ecb54f52a1b8c9a8e9d7'), 'name': 'John Doe', 'age': 30}
Memecahkan Hal ini
- Kita menyambungkan ke basisdata dan koleksi MongoDB.
- Kita menyisipkan dokumen baru dan mendapatkan ObjectIdnya.
- Kita menggunakan ObjectId itu untuk query basisdata dan menemukan dokumen kita.
Itu seperti memberikan seseorang kunci unik untuk locker mereka - dengan ObjectId, kita selalu dapat menemukan dokumen kita dalam basisdata MongoDB yang luas!
Kesimpulan
Dan begitu saja, teman-teman! Kita telah berpergian melalui negeri MongoDB ObjectIds, membuat mereka, mengekstrak timestamp, mengkonversi mereka ke string, dan bahkan menggunakan mereka dalam query. Ingat, ObjectIds adalah teman Anda di dunia MongoDB - mereka membantu menjaga data Anda terorganisir dan mudah diakses.
Sekarang Anda teruskan petualangan MongoDB Anda, Anda akan menemukan ObjectIds muncul di mana-mana. Tetapi sekarang, dilengkapi pengetahuan ini, Anda dapat menanganinya seperti seorang pro!
Tetap berlatih, tetap bersemangat, dan kodong senang! ?
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 dalam koleksi MongoDB menggunakan ObjectId |
Ingat, di dunia MongoDB, ObjectIds adalah teman Anda yang setia. Perlakukannya dengan baik, dan mereka akan melayani Anda setia dalam petualangan basisdata Anda! ?
Credits: Image by storyset