Dalam tutorial ini, kita akan melihat melakukan operasi kueri menggunakan ID Dokumen di MongoDB. MongoDB menyediakan operator pencarian untuk membuat kueri dokumen dari koleksi
Dalam tutorial ini, pertama-tama kita akan melihat dokumen kueri menggunakan ID Dokumen dalam kueri MongoDB Shell dan kemudian menggunakan kode driver Java
2. Apa ID Dokumen dari Dokumen MongoDB?
Sama seperti sistem manajemen basis data lainnya, MongoDB membutuhkan pengidentifikasi unik untuk setiap dokumen yang disimpan dalam koleksi. Pengidentifikasi unik ini bertindak sebagai kunci utama untuk koleksi
Di MongoDB, ID terdiri dari 12 byte
- stempel waktu 4-byte yang mewakili pembuatan ID yang diukur dalam hitungan detik sejak zaman Unix
- nilai yang dihasilkan acak 5-byte yang unik untuk mesin dan proses
- pencacah pertambahan 3-byte
Di MongoDB, ID disimpan di bidang bernama _id dan dihasilkan oleh klien. Oleh karena itu, ID harus dibuat sebelum mengirim dokumen ke database. Di sisi klien, kita bisa menggunakan driver-generated ID atau membuat custom ID
Pengidentifikasi unik disimpan di kelas ObjectId. Kelas ini menyediakan metode kemudahan untuk mendapatkan data yang disimpan dalam ID tanpa benar-benar menguraikannya. MongoDB akan menambahkan bidang _id dan menetapkan ObjectId unik untuk dokumen jika _id tidak ditentukan saat memasukkan dokumen
3. Inisialisasi Basis Data
Pertama, mari kita siapkan database baru baeldung dan koleksi sampel, kendaraan
use baeldung; db.createCollection("vehicle");Selanjutnya, mari tambahkan beberapa dokumen ke dalam koleksi dengan menggunakan metode insertMany
Jika penyisipan berhasil, perintah di atas akan mencetak JSON yang mirip dengan yang ditunjukkan di bawah ini
{ "acknowledged" : true, "insertedIds" : [ ObjectId("62d01d17cdd1b7c8a5f945b9"), ObjectId("62d01d17cdd1b7c8a5f945ba"), ObjectId("62d01d17cdd1b7c8a5f945bb") ] }Kami telah berhasil mengatur database dan koleksi. Kami akan menggunakan database dan koleksi ini untuk semua contoh
4. Menggunakan Shell MongoDB
Kami akan menggunakan db. koleksi. metode find(query, projection) untuk menanyakan dokumen dari MongoDB
Pertama, mari tulis kueri yang akan mengembalikan semua dokumen pengumpulan kendaraan
db.vehicle.find({});Kueri di atas mengembalikan semua dokumen
{ "_id" : ObjectId("62d01d17cdd1b7c8a5f945b9"), "companyName" : "Skoda", "modelName" : "Octavia", "launchYear" : 2016, "type" : "Sports", "registeredNo" : "SKO 1134" } { "_id" : ObjectId("62d01d17cdd1b7c8a5f945ba"), "companyName" : "BMW", "modelName" : "X5", "launchYear" : 2020, "type" : "SUV", "registeredNo" : "BMW 3325" } { "_id" : ObjectId("62d01d17cdd1b7c8a5f945bb"), "companyName" : "Mercedes", "modelName" : "Maybach", "launchYear" : 2021, "type" : "Luxury", "registeredNo" : "MER 9754" }_Selanjutnya, mari tulis kueri untuk mengambil dokumen pengumpulan kendaraan menggunakan ID yang dikembalikan pada hasil di atas
db.vehicle.find( { "_id": ObjectId("62d01d17cdd1b7c8a5f945b9") });Kueri di atas mengembalikan dokumen koleksi kendaraan dengan _id sama dengan ObjectId(“62d01d17cdd1b7c8a5f945b9”)
{ "_id" : ObjectId("62d01d17cdd1b7c8a5f945b9"), "companyName" : "Skoda", "modelName" : "Octavia", "launchYear" : 2016, "type" : "Sports", "registeredNo" : "SKO 1134" }_Selain itu, kami dapat mengambil beberapa dokumen pengumpulan kendaraan menggunakan ID dengan operator kueri
db.vehicle.find( { "_id": { $in: [ ObjectId("62d01d17cdd1b7c8a5f945b9"), ObjectId("62d01d17cdd1b7c8a5f945ba"), ObjectId("62d01d17cdd1b7c8a5f945bb") ] } });Kueri di atas mengembalikan semua dokumen pengumpulan kendaraan untuk ID yang dikueri di dalam operator
{ "_id" : ObjectId("62d01d17cdd1b7c8a5f945b9"), "companyName" : "Skoda", "modelName" : "Octavia", "launchYear" : 2016, "type" : "Sports", "registeredNo" : "SKO 1134" } { "_id" : ObjectId("62d01d17cdd1b7c8a5f945ba"), "companyName" : "BMW", "modelName" : "X5", "launchYear" : 2020, "type" : "SUV", "registeredNo" : "BMW 3325" } { "_id" : ObjectId("62d01d17cdd1b7c8a5f945bb"), "companyName" : "Mercedes", "modelName" : "Maybach", "launchYear" : 2021, "type" : "Luxury", "registeredNo" : "MER 9754" }_Demikian pula, salah satu operator kueri dapat digunakan sebagai filter untuk metode find() dengan ID yang akan dikueri
Selain itu, penting untuk diperhatikan bahwa saat melakukan kueri dokumen dengan kolom _id, nilai string ID Dokumen harus ditetapkan sebagai ObjectId() dan bukan String
Mari coba kueri dokumen yang ada dengan ID sebagai nilai String
db.vehicle.find( { "_id": "62d01d17cdd1b7c8a5f945b9" });_Sayangnya, kueri di atas tidak akan mengembalikan dokumen apa pun karena tidak ada dokumen dengan ID sebagai nilai String 62d01d17cdd1b7c8a5f945b9
5. Menggunakan Driver Java
Sejauh ini, kita telah mempelajari cara membuat kueri dokumen menggunakan ID dengan MongoDB Shell. Sekarang mari kita implementasikan hal yang sama menggunakan driver MongoDB Java
Sebelum melakukan operasi update, pertama-tama mari kita hubungkan ke koleksi kendaraan di baeldung database
db.vehicle.insertMany([ { "companyName":"Skoda", "modelName":"Octavia", "launchYear":2016, "type":"Sports", "registeredNo":"SKO 1134" }, { "companyName":"BMW", "modelName":"X5", "launchYear":2020, "type":"SUV", "registeredNo":"BMW 3325" }, { "companyName":"Mercedes", "modelName":"Maybach", "launchYear":2021, "type":"Luxury", "registeredNo":"MER 9754" }]);_0Di sini, dalam hal ini, kami terhubung ke MongoDB, yang berjalan di port default 27017 di localhost
Pertama, mari tulis kode ke dokumen kueri menggunakan ID
db.vehicle.insertMany([ { "companyName":"Skoda", "modelName":"Octavia", "launchYear":2016, "type":"Sports", "registeredNo":"SKO 1134" }, { "companyName":"BMW", "modelName":"X5", "launchYear":2020, "type":"SUV", "registeredNo":"BMW 3325" }, { "companyName":"Mercedes", "modelName":"Maybach", "launchYear":2021, "type":"Luxury", "registeredNo":"MER 9754" }]);_1Di sini, kami melewatkan filter Bson sebagai parameter ke metode find() dengan kolom _id untuk melakukan kueri. Cuplikan di atas akan mengembalikan dokumen pengumpulan kendaraan di mana _id sama dengan ObjectId(“62d01d17cdd1b7c8a5f945b9”)
Selanjutnya, mari kita menulis sebuah potongan untuk menanyakan dokumen dengan beberapa ID
db.vehicle.insertMany([ { "companyName":"Skoda", "modelName":"Octavia", "launchYear":2016, "type":"Sports", "registeredNo":"SKO 1134" }, { "companyName":"BMW", "modelName":"X5", "launchYear":2020, "type":"SUV", "registeredNo":"BMW 3325" }, { "companyName":"Mercedes", "modelName":"Maybach", "launchYear":2021, "type":"Luxury", "registeredNo":"MER 9754" }]);_2Kueri di atas mengembalikan semua dokumen pengumpulan kendaraan untuk ID yang diminta
Terakhir, mari coba kueri koleksi kendaraan dengan ID yang dibuat oleh pengemudi
db.vehicle.insertMany([ { "companyName":"Skoda", "modelName":"Octavia", "launchYear":2016, "type":"Sports", "registeredNo":"SKO 1134" }, { "companyName":"BMW", "modelName":"X5", "launchYear":2020, "type":"SUV", "registeredNo":"BMW 3325" }, { "companyName":"Mercedes", "modelName":"Maybach", "launchYear":2021, "type":"Luxury", "registeredNo":"MER 9754" }]);_3Kueri di atas tidak akan mengembalikan dokumen apa pun karena dokumen dengan ID yang baru dibuat tidak akan ada dalam koleksi kendaraan
6. Kesimpulan
Pada artikel ini, kita telah mempelajari cara membuat kueri dokumen menggunakan ID Dokumen di MongoDB. Pertama-tama, kami melihat kasus penggunaan ini dalam kueri MongoDB Shell, lalu kami membahas kode driver Java yang sesuai