Panduan BSON MongoDB

1. Pengenalan

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

Sekarang, penerangan mendalam mengenai MongoDB dan semua kemampuannya berada di luar ruang lingkup artikel ini. Walau bagaimanapun, akan berguna untuk memahami beberapa konsep utama.

MongoDB adalah mesin penyimpanan dokumen NoSQL yang diedarkan. Dokumen disimpan sebagai data BSON dan dikumpulkan bersama menjadi koleksi. Dokumen dalam koleksi serupa dengan baris dalam jadual pangkalan data hubungan .

Untuk melihat lebih mendalam, lihat artikel pengenalan MongoDB.

2. Apa itu BSON ?

BSON bermaksud Binary JSON . Ini adalah protokol untuk siriisasi binari data seperti JSON.

JSON adalah format pertukaran data yang popular dalam perkhidmatan web moden. Ini menyediakan cara yang fleksibel untuk mewakili struktur data yang kompleks.

BSON memberikan beberapa kelebihan berbanding menggunakan JSON biasa:

  • Ringkas: Dalam kebanyakan kes, menyimpan struktur BSON memerlukan lebih sedikit ruang daripada yang setara dengan JSON
  • Jenis Data: BSON menyediakan jenis data tambahan yang tidak terdapat di JSON biasa, seperti Tarikh dan BinData

Salah satu faedah utama menggunakan BSON ialah mudah dilalui . Dokumen BSON mengandungi metadata tambahan yang memungkinkan untuk memanipulasi bidang dokumen dengan mudah, tanpa harus membaca keseluruhan dokumen itu sendiri.

3. Pemandu MongoDB

Sekarang kita mempunyai pemahaman asas mengenai BSON dan MongoDB, mari kita lihat bagaimana menggunakannya bersama-sama. Kami akan memberi tumpuan kepada tindakan utama dari singkatan CRUD yang ( C reate, R ead, U pdate, D elete).

MongoDB menyediakan pemacu perisian untuk kebanyakan bahasa pengaturcaraan moden. Pemacu dibina di atas perpustakaan BSON , yang bermaksud kami akan bekerjasama secara langsung dengan API BSON semasa membuat pertanyaan. Untuk maklumat lebih lanjut, lihat panduan kami untuk bahasa pertanyaan MongoDB.

Di bahagian ini, kita akan melihat penggunaan pemacu untuk menyambung ke kluster, dan menggunakan API BSON untuk melakukan pelbagai jenis pertanyaan. Perhatikan bahawa pemacu MongoDB menyediakan kelas Penapis yang dapat membantu kami menulis kod yang lebih padat. Walau bagaimanapun, untuk tutorial ini, kami hanya akan menggunakan API BSON teras.

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

3.1. Menyambung

Untuk memulakan, pertama kami menambahkan pemacu MongoDB sebagai kebergantungan ke dalam aplikasi kami:

 org.mongodb mongodb-driver-sync 3.10.1 

Kemudian kami membuat sambungan ke pangkalan data dan koleksi MongoDB:

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

Bahagian yang tinggal akan melihat pembuatan pertanyaan menggunakan rujukan koleksi .

3.2. Masukkan

Katakanlah kita mempunyai JSON berikut yang ingin kita masukkan sebagai dokumen baru ke dalam koleksi pekerja :

{ "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 ini JSON menunjukkan jenis data yang paling umum yang akan kita hadapi dengan dokumen MongoDB: teks, angka, tatasusunan, dan dokumen tertanam.

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); 

The Document kelas adalah API utama yang digunakan dalam BSON. Ini memperluas antara muka Java Map dan mengandungi beberapa kaedah yang terlalu banyak. Ini memudahkan untuk bekerja dengan jenis asli dan juga objek biasa seperti ID objek, tarikh, dan senarai.

3.3. Cari

Untuk mencari dokumen di MongoDB, kami menyediakan dokumen carian yang menentukan bidang mana yang harus ditanyakan. Sebagai contoh, untuk mencari semua dokumen yang mempunyai nama belakang "Smith" kami akan menggunakan dokumen JSON berikut:

{ "last_name": "Smith" }

Ditulis dalam BSON ini adalah:

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

Pertanyaan "Cari" dapat menerima beberapa bidang dan tingkah laku lalai adalah menggunakan logik dan operator untuk menggabungkannya. Ini bermaksud hanya dokumen yang sesuai dengan semua bidang yang akan dikembalikan .

Untuk menyelesaikannya, MongoDB menyediakan atau meminta operator:

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

Ini akan menemui semua dokumen yang mempunyai nama pertama "Joe" atau nama belakang "Smith". Untuk menulis ini sebagai BSON, kami akan menggunakan Dokumen bersarang seperti pertanyaan sisipan 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. Kemas kini

Pertanyaan kemas kini sedikit berbeza di MongoDB kerana memerlukan dua dokumen :

  1. Kriteria penapis untuk mencari satu atau lebih dokumen
  2. Dokumen kemas kini yang menentukan bidang mana yang hendak diubah

Sebagai contoh, katakan kita mahu menambahkan kemahiran "keselamatan" kepada setiap pekerja yang sudah mempunyai kemahiran "spring". Dokumen pertama akan menemui semua pekerja dengan kemahiran "musim bunga", dan yang kedua akan menambah entri "keselamatan" baru ke pelbagai kemahiran mereka.

Di JSON, kedua-dua pertanyaan ini akan kelihatan seperti:

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

Dan di BSON, mereka akan:

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. Padam

Padam pertanyaan di MongoDB menggunakan sintaks yang sama dengan cari pertanyaan. Kami hanya menyediakan dokumen yang menentukan satu atau lebih kriteria yang sesuai.

Sebagai contoh, katakan kita menemui pepijat dalam pangkalan data pekerja kita dan membuat pekerja secara tidak sengaja dengan nilai negatif selama bertahun-tahun berkhidmat. Untuk mencari 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, kami telah melihat pengenalan asas untuk membina pertanyaan MongoDB menggunakan perpustakaan BSON. Dengan hanya menggunakan API BSON, kami melaksanakan operasi CRUD asas untuk koleksi MongoDB.

Apa yang belum kami bahas adalah topik yang lebih maju seperti unjuran, agregasi, pertanyaan geospasial, operasi pukal, dan banyak lagi. Semua ini boleh dilakukan hanya dengan menggunakan perpustakaan BSON. Contoh-contoh yang telah kita lihat di sini membentuk blok bangunan yang akan kita gunakan untuk melaksanakan operasi yang lebih maju ini.

Seperti biasa, anda boleh mendapatkan contoh kod di atas di repo GitHub kami.