MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Hướng dẫn về MongoDB với Java

1. Tổng quan

Trong bài viết này, chúng ta sẽ xem xét việc tích hợp MongoDB, một cơ sở dữ liệu mã nguồn mở NoSQL rất phổ biến với một ứng dụng khách Java độc lập.

MongoDB được viết bằng C ++ và có khá nhiều tính năng vững chắc như thu nhỏ bản đồ, tự động làm sắc nét, sao chép, tính khả dụng cao, v.v.

2. MongoDB

Hãy bắt đầu với một vài điểm chính về bản thân MongoDB:

  • lưu trữ dữ liệu trong các tài liệu giống JSON có thể có nhiều cấu trúc khác nhau
  • sử dụng lược đồ động, có nghĩa là chúng tôi có thể tạo bản ghi mà không cần xác định trước bất kỳ điều gì
  • cấu trúc của một bản ghi có thể được thay đổi đơn giản bằng cách thêm các trường mới hoặc xóa các trường hiện có

Mô hình dữ liệu được đề cập ở trên cho chúng ta khả năng biểu diễn các mối quan hệ phân cấp, lưu trữ mảng và các cấu trúc phức tạp hơn một cách dễ dàng.

3. Thuật ngữ

Việc hiểu các khái niệm trong MongoDB trở nên dễ dàng hơn nếu chúng ta có thể so sánh chúng với cấu trúc cơ sở dữ liệu quan hệ.

Hãy xem sự tương đồng giữa Mongo và hệ thống MySQL truyền thống:

  • Bảng trong MySQL trở thành một Bộ sưu tập trong Mongo
  • Hàng trở thành một Tài liệu
  • Cột trở thành một Trường
  • Tham gia được định nghĩa là liên kết nhúng tài liệu

Tất nhiên, đây là một cách đơn giản để xem xét các khái niệm cốt lõi của MongoDB, nhưng vẫn hữu ích.

Bây giờ, hãy đi sâu vào triển khai để hiểu cơ sở dữ liệu mạnh mẽ này.

4. Sự phụ thuộc của Maven

Chúng ta cần bắt đầu bằng cách xác định sự phụ thuộc của Trình điều khiển Java cho MongoDB:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.4.1</version>
</dependency>

Để kiểm tra xem có phiên bản thư viện mới nào đã được phát hành hay không - hãy theo dõi các bản phát hành tại đây.

5. Sử dụng MongoDB

Bây giờ, hãy bắt đầu triển khai các truy vấn Mongo với Java. Chúng tôi sẽ làm theo các thao tác CRUD cơ bản vì chúng là cách tốt nhất để bắt đầu.

5.1. Tạo kết nối với MongoClient

Đầu tiên, hãy tạo kết nối với máy chủ MongoDB. Với phiên bản> =2.10.0, chúng tôi sẽ sử dụng MongoClient :

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

Và đối với các phiên bản cũ hơn, hãy sử dụng Mongo lớp:

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

5.2. Kết nối với Cơ sở dữ liệu

Bây giờ, hãy kết nối với cơ sở dữ liệu của chúng tôi. Điều thú vị cần lưu ý là chúng ta không cần tạo một cái. Khi Mongo thấy rằng cơ sở dữ liệu không tồn tại, nó sẽ tạo nó cho chúng tôi:

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

Đôi khi, theo mặc định, MongoDB chạy ở chế độ xác thực. Trong trường hợp đó, chúng tôi cần xác thực trong khi kết nối với cơ sở dữ liệu.

Chúng tôi có thể làm điều đó như được trình bày dưới đây:

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

5.3. Hiển thị Cơ sở dữ liệu Hiện có

Hãy hiển thị tất cả các cơ sở dữ liệu hiện có. Khi chúng ta muốn sử dụng dòng lệnh, cú pháp để hiển thị cơ sở dữ liệu tương tự như MySQL:

show databases;

Trong Java, chúng tôi hiển thị cơ sở dữ liệu bằng đoạn mã dưới đây:

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

Đầu ra sẽ là:

local      0.000GB
myMongoDb  0.000GB

Ở trên, địa phương là cơ sở dữ liệu Mongo mặc định.

5.4. Tạo Bộ sưu tập

Hãy bắt đầu bằng cách tạo Bộ sưu tập (bảng tương đương cho MongoDB) cho cơ sở dữ liệu của chúng tôi. Khi chúng tôi đã kết nối với cơ sở dữ liệu của mình, chúng tôi có thể tạo một Bộ sưu tập như:

database.createCollection("customers", null);

Bây giờ, hãy hiển thị tất cả các bộ sưu tập hiện có cho cơ sở dữ liệu hiện tại:

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

Đầu ra sẽ là:

customers

5.5. Lưu - Chèn

Sự tiết kiệm hoạt động có ngữ nghĩa lưu hoặc cập nhật:if an id hiện tại, nó thực hiện một cập nhật , nếu không - nó thực hiện một chèn .

Khi chúng ta tiết kiệm một khách hàng mới:

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

Thực thể sẽ được chèn vào cơ sở dữ liệu:

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

Tiếp theo, chúng ta sẽ xem xét hoạt động tương tự - lưu - với cập nhật ngữ nghĩa.

5.6. Lưu - Cập nhật

Bây giờ chúng ta hãy xem xét lưu với cập nhật ngữ nghĩa, hoạt động trên một khách hàng hiện tại:

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

Bây giờ, khi chúng ta tiết kiệm khách hàng hiện tại - chúng tôi sẽ cập nhật nó:

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

Cơ sở dữ liệu sẽ giống như sau:

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

Như bạn có thể thấy, trong ví dụ cụ thể này, save sử dụng ngữ nghĩa của update , bởi vì chúng tôi sử dụng đối tượng với _id đã cho .

5.7. Đọc một Tài liệu Từ một Bộ sưu tập

Hãy tìm kiếm một Tài liệu trong một Bộ sưu tập bằng cách thực hiện một truy vấn:

BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "John");
DBCursor cursor = collection.find(searchQuery);

while (cursor.hasNext()) {
    System.out.println(cursor.next());
}

Nó sẽ hiển thị Tài liệu duy nhất chúng tôi hiện có trong Bộ sưu tập của chúng tôi :

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

5.8. Xóa a Tài liệu

Hãy chuyển sang thao tác CRUD cuối cùng của chúng ta, xóa:

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

collection.remove(searchQuery);

Với lệnh trên được thực thi, Tài liệu duy nhất của chúng tôi sẽ bị xóa khỏi Bộ sưu tập .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bảo mật cơ sở dữ liệu 101:Hiểu đặc quyền truy cập cơ sở dữ liệu

  2. Nhận phần tử thứ n của một mảng trong MongoDB

  3. MongoDB $ toDate

  4. MongoDB:Làm thế nào để đếm số lượng khóa trong một tài liệu?

  5. tạo biểu mẫu đăng ký và đăng nhập trong node.js và mongodb