Panduan MongoDB BSON

1. Perkenalan

Dalam tutorial ini, kita akan melihat BSON dan bagaimana kita dapat menggunakannya untuk berinteraksi dengan MongoDB.

Sekarang, deskripsi mendalam tentang MongoDB dan semua kemampuannya berada di luar cakupan artikel ini. Namun, akan berguna untuk memahami beberapa konsep utama.

MongoDB adalah mesin penyimpanan dokumen NoSQL terdistribusi. Dokumen disimpan sebagai data BSON dan dikelompokkan menjadi beberapa koleksi. Dokumen dalam koleksi dapat dianalogikan dengan baris dalam tabel database relasional .

Untuk melihat lebih dalam, lihat artikel pengantar MongoDB.

2. Apakah BSON itu ?

BSON adalah singkatan dari Binary JSON . Ini adalah protokol untuk serialisasi biner dari data seperti JSON.

JSON adalah format pertukaran data yang populer di layanan web modern. Ini memberikan cara yang fleksibel untuk merepresentasikan struktur data yang kompleks.

BSON memberikan beberapa keunggulan dibandingkan menggunakan JSON biasa:

  • Ringkas: Dalam kebanyakan kasus, menyimpan struktur BSON membutuhkan lebih sedikit ruang daripada JSON yang setara
  • Tipe Data: BSON menyediakan tipe data tambahan yang tidak ditemukan di JSON biasa, seperti Date dan BinData

Salah satu manfaat utama menggunakan BSON adalah mudah untuk dilintasi . Dokumen BSON berisi metadata tambahan yang memungkinkan manipulasi bidang dokumen dengan mudah, tanpa harus membaca seluruh dokumen itu sendiri.

3. Driver MongoDB

Sekarang setelah kita memiliki pemahaman dasar tentang BSON dan MongoDB, mari kita lihat cara menggunakannya bersama. Kami akan fokus pada tindakan utama dari akronim CRUD ( C reate, R ead, U pdate, D elete).

MongoDB menyediakan driver perangkat lunak untuk sebagian besar bahasa pemrograman modern. Driver dibangun di atas pustaka BSON , yang berarti kami akan bekerja langsung dengan API BSON saat membuat kueri. Untuk informasi lebih lanjut, lihat panduan kami untuk bahasa kueri MongoDB.

Di bagian ini, kita akan melihat menggunakan driver untuk terhubung ke cluster, dan menggunakan API BSON untuk melakukan berbagai jenis kueri. Perhatikan bahwa driver MongoDB menyediakan kelas Filter yang dapat membantu kita menulis kode yang lebih ringkas. Untuk tutorial ini, bagaimanapun, kami hanya akan fokus pada penggunaan API BSON inti.

Sebagai alternatif untuk menggunakan driver MongoDB dan BSON secara langsung, lihat panduan Spring Data MongoDB kami.

3.1. Menghubungkan

Untuk memulai, pertama-tama kami menambahkan driver MongoDB sebagai dependensi ke dalam aplikasi kami:

 org.mongodb mongodb-driver-sync 3.10.1 

Kemudian kami membuat koneksi ke database dan koleksi MongoDB:

MongoClient mongoClient = MongoClients.create(); MongoDatabase database = mongoClient.getDatabase("myDB"); MongoCollection collection = database.getCollection("employees");

Bagian selanjutnya akan membahas pembuatan kueri menggunakan referensi koleksi .

3.2. Memasukkan

Katakanlah kita memiliki JSON berikut yang ingin kita masukkan sebagai dokumen baru ke dalam koleksi karyawan :

{ "first_name" : "Joe", "last_name" : "Smith", "title" : "Java Developer", "years_of_service" : 3, "skills" : ["java","spring","mongodb"], "manager" : { "first_name" : "Sally", "last_name" : "Johanson" } }

Contoh JSON ini menunjukkan tipe data paling umum yang akan kita temui dengan dokumen MongoDB: teks, numerik, array, dan dokumen yang disematkan.

Untuk memasukkan ini menggunakan BSON, kami akan menggunakan API Dokumen MongoDB :

Document employee = new Document() .append("first_name", "Joe") .append("last_name", "Smith") .append("title", "Java Developer") .append("years_of_service", 3) .append("skills", Arrays.asList("java", "spring", "mongodb")) .append("manager", new Document() .append("first_name", "Sally") .append("last_name", "Johanson")); collection.insertOne(employee); 

Kelas Dokumen adalah API utama yang digunakan di BSON. Ini memperluas antarmuka Java Map dan berisi beberapa metode yang kelebihan beban. Ini memudahkan untuk bekerja dengan tipe asli serta objek umum seperti ID objek, tanggal, dan daftar.

3.3. Temukan

Untuk menemukan dokumen di MongoDB, kami menyediakan dokumen pencarian yang menentukan bidang mana yang akan ditanyakan. Misalnya, untuk menemukan semua dokumen yang memiliki nama belakang "Smith" kita akan menggunakan dokumen JSON berikut:

{ "last_name": "Smith" }

Ditulis dalam BSON ini akan menjadi:

Document query = new Document("last_name", "Smith"); List results = new ArrayList(); collection.find(query).into(results);

Kueri "Temukan" dapat menerima beberapa bidang dan perilaku defaultnya adalah menggunakan logika dan operator untuk menggabungkannya. Ini berarti hanya dokumen yang cocok dengan semua bidang yang akan dikembalikan .

Untuk menyiasati ini, MongoDB menyediakan operator kueri atau :

{ "$or": [ { "first_name": "Joe" }, { "last_name":"Smith" } ] }

Ini akan menemukan semua dokumen yang memiliki nama depan "Joe" atau nama belakang "Smith". Untuk menulis ini sebagai BSON, kami akan menggunakan Dokumen bersarang seperti kueri sisipkan di atas:

Document query = new Document("$or", Arrays.asList( new Document("last_name", "Smith"), new Document("first_name", "Joe"))); List results = new ArrayList(); collection.find(query).into(results);

3.4. Memperbarui

Kueri pembaruan sedikit berbeda di MongoDB karena memerlukan dua dokumen :

  1. Kriteria filter untuk menemukan satu atau lebih dokumen
  2. Dokumen pembaruan yang menentukan bidang mana yang akan diubah

Misalnya, kita ingin menambahkan keterampilan "keamanan" ke setiap karyawan yang sudah memiliki keterampilan "pegas". Dokumen pertama akan menemukan semua karyawan dengan keterampilan "musim semi", dan yang kedua akan menambahkan entri "keamanan" baru ke susunan keterampilan mereka.

Di JSON, dua kueri ini akan terlihat seperti:

{ "skills": { $elemMatch: { "$eq": "spring" } } } { "$push": { "skills": "security" } }

Dan di BSON, mereka akan menjadi:

Document query = new Document( "skills", new Document( "$elemMatch", new Document("$eq", "spring"))); Document update = new Document( "$push", new Document("skills", "security")); collection.updateMany(query, update); 

3.5. Menghapus

Hapus kueri di MongoDB menggunakan sintaks yang sama seperti kueri temukan. Kami hanya menyediakan dokumen yang menetapkan satu atau lebih kriteria untuk dicocokkan.

Misalnya, kami menemukan bug di database karyawan kami dan secara tidak sengaja membuat karyawan dengan nilai negatif selama bertahun-tahun layanan. Untuk menemukan semuanya, kami akan menggunakan JSON berikut:

{ "years_of_service" : { "$lt" : 0 } }

Dokumen BSON yang setara adalah:

Document query = new Document( "years_of_service", new Document("$lt", 0)); collection.deleteMany(query);

4. Kesimpulan

Dalam tutorial ini, kita telah melihat pengantar dasar untuk membuat kueri MongoDB menggunakan pustaka BSON. Hanya menggunakan API BSON, kami mengimplementasikan operasi CRUD dasar untuk koleksi MongoDB.

Apa yang belum kami bahas adalah topik yang lebih maju seperti proyeksi, agregasi, kueri geospasial, operasi massal, dan banyak lagi. Semua ini dimungkinkan hanya dengan menggunakan pustaka BSON. Contoh yang kami lihat di sini membentuk blok penyusun yang akan kami gunakan untuk menerapkan operasi yang lebih canggih ini.

Seperti biasa, Anda dapat menemukan contoh kode di atas di repo GitHub kami.