Panduan MongoDB dengan Java

1. Ikhtisar

Pada artikel ini, kita akan melihat integrasi MongoDB, database open source NoSQL yang sangat populer dengan klien Java yang berdiri sendiri.

MongoDB ditulis dalam C ++ dan memiliki cukup banyak fitur solid seperti pengurangan peta, sharding otomatis, replikasi, ketersediaan tinggi, dll.

2. MongoDB

Mari kita mulai dengan beberapa poin penting tentang MongoDB itu sendiri:

  • menyimpan data dalam dokumen mirip JSON yang dapat memiliki berbagai struktur
  • menggunakan skema dinamis, yang berarti kita dapat membuat catatan tanpa menentukan apa pun sebelumnya
  • struktur rekaman dapat diubah hanya dengan menambahkan bidang baru atau menghapus yang sudah ada

Model data yang disebutkan di atas memberi kita kemampuan untuk merepresentasikan hubungan hierarki, untuk menyimpan array dan struktur lain yang lebih kompleks dengan mudah.

3. Istilah

Memahami konsep di MongoDB menjadi lebih mudah jika kita dapat membandingkannya dengan struktur database relasional.

Mari kita lihat analogi antara Mongo dan sistem MySQL tradisional:

  • Tabel di MySQL menjadi Koleksi di Mongo
  • Baris menjadi Dokumen
  • Kolom menjadi Bidang
  • Gabungan didefinisikan sebagai dokumen tautan dan tertanam

Ini adalah cara sederhana untuk melihat konsep inti MongoDB, tetapi tetap berguna.

Sekarang, mari selami implementasi untuk memahami database yang kuat ini.

4. Ketergantungan Maven

Kita perlu mulai dengan mendefinisikan ketergantungan Driver Java untuk MongoDB:

 org.mongodb mongo-java-driver 3.4.1  

Untuk memeriksa apakah ada versi baru pustaka yang telah dirilis - lacak rilisnya di sini.

5. Menggunakan MongoDB

Sekarang, mari mulai menerapkan kueri Mongo dengan Java. Kami akan mengikuti dengan operasi CRUD dasar karena ini adalah yang terbaik untuk memulai.

5.1. Buat Koneksi Dengan MongoClient

Pertama, mari buat koneksi ke server MongoDB. Dengan versi> = 2.10.0, kita akan menggunakan MongoClient :

MongoClient mongoClient = new MongoClient("localhost", 27017);

Dan untuk versi lama gunakan kelas Mongo :

Mongo mongo = new Mongo("localhost", 27017);

5.2. Menghubungkan ke Database

Sekarang, mari hubungkan ke database kita. Menarik untuk dicatat bahwa kita tidak perlu membuatnya. Ketika Mongo melihat bahwa database tidak ada, itu akan membuatnya untuk kita:

DB database = mongoClient.getDB("myMongoDb");

Terkadang, secara default, MongoDB berjalan dalam mode terautentikasi. Dalam hal ini, kita perlu mengautentikasi saat menghubungkan ke database.

Kami dapat melakukannya seperti yang disajikan di bawah ini:

MongoClient mongoClient = new MongoClient(); DB database = mongoClient.getDB("myMongoDb"); boolean auth = database.authenticate("username", "pwd".toCharArray());

5.3. Tampilkan Database yang Ada

Mari kita tampilkan semua database yang ada. Saat kita ingin menggunakan command line, sintaks untuk menampilkan database mirip dengan MySQL:

show databases;

Di Java, kami menampilkan database menggunakan potongan di bawah ini:

mongoClient.getDatabaseNames().forEach(System.out::println);

Outputnya adalah:

local 0.000GB myMongoDb 0.000GB

Di atas, lokal adalah database Mongo default.

5.4. Buat Koleksi

Mari kita mulai dengan membuat Collection (setara tabel untuk MongoDB) untuk database kita. Setelah kami terhubung ke database kami, kami dapat membuat Koleksi sebagai:

database.createCollection("customers", null);

Sekarang, mari kita tampilkan semua koleksi yang ada untuk database saat ini:

database.getCollectionNames().forEach(System.out::println);

Outputnya adalah:

customers

5.5. Simpan - Sisipkan

The save operation has save-or-update semantics: if an id is present, it performs an update, if not – it does an insert.

When we save a new customer:

DBCollection collection = database.getCollection("customers"); BasicDBObject document = new BasicDBObject(); document.put("name", "Shubham"); document.put("company", "Baeldung"); collection.insert(document);

The entity will be inserted into a database:

{ "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"), "name" : "Shubham", "company" : "Baeldung" }

Next, we’ll look at the same operation – save – with update semantics.

5.6. Save – Update

Let’s now look at save with update semantics, operating on an existing customer:

{ "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"), "name" : "Shubham", "company" : "Baeldung" }

Now, when we save the existing customer – we will update it:

BasicDBObject query = new BasicDBObject(); query.put("name", "Shubham"); BasicDBObject newDocument = new BasicDBObject(); newDocument.put("name", "John"); BasicDBObject updateObject = new BasicDBObject(); updateObject.put("$set", newDocument); collection.update(query, updateObject);

The database will look like this:

{ "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"), "name" : "John", "company" : "Baeldung" }

As you can see, in this particular example, save uses the semantics of update, because we use object with given _id.

5.7. Read a Document From a Collection

Let's search for a Document in a Collection by making a query:

BasicDBObject searchQuery = new BasicDBObject(); searchQuery.put("name", "John"); DBCursor cursor = collection.find(searchQuery); while (cursor.hasNext()) { System.out.println(cursor.next()); }

It will show the only Document we have by now in our Collection:

[ { "_id" : ObjectId("33a52bb7830b8c9b233b4fe6"), "name" : "John", "company" : "Baeldung" } ]

5.8. Delete a Document

Let's move forward to our last CRUD operation, deletion:

BasicDBObject searchQuery = new BasicDBObject(); searchQuery.put("name", "John"); collection.remove(searchQuery);

With above command executed, our only Document will be removed from the Collection.

6. Conclusion

This article was a quick introduction to using MongoDB from Java.

Penerapan semua contoh dan cuplikan kode ini dapat ditemukan di GitHub - ini adalah proyek berbasis Maven, jadi semestinya mudah untuk mengimpor dan menjalankan apa adanya.