Java를 사용한 MongoDB 가이드

1. 개요

이 기사에서는 매우 인기있는 NoSQL 오픈 소스 데이터베이스 인 MongoDB를 독립형 Java 클라이언트와 통합하는 방법을 살펴 봅니다.

MongoDB는 C ++로 작성되었으며 맵 축소, 자동 분할, 복제, 고 가용성 등과 같은 많은 견고한 기능을 가지고 있습니다.

2. MongoDB

MongoDB 자체에 대한 몇 가지 핵심 사항부터 시작하겠습니다.

  • 다양한 구조를 가질 수있는 JSON과 유사한 문서에 데이터를 저장합니다.
  • 동적 스키마를 사용하므로 사전 정의없이 레코드를 만들 수 있습니다.
  • 새 필드를 추가하거나 기존 필드를 삭제하여 레코드 구조를 변경할 수 있습니다.

위에서 언급 한 데이터 모델은 계층 적 관계를 표현하고 배열 및 기타 더 복잡한 구조를 쉽게 저장할 수있는 기능을 제공합니다.

3. 용어

MongoDB의 개념을 이해하는 것은 관계형 데이터베이스 구조와 비교할 수 있다면 더 쉬워집니다.

Mongo와 기존 MySQL 시스템의 유사점을 살펴 보겠습니다.

  • MySQL의 테이블 이 Mongo 의 컬렉션 이 됨
  • 문서가 됨
  • 필드가 됨
  • 조인링크포함 된 문서 로 정의됩니다.

물론 이것은 MongoDB 핵심 개념을 보는 단순한 방법이지만 그럼에도 불구하고 유용합니다.

이제이 강력한 데이터베이스를 이해하기 위해 구현에 대해 알아 보겠습니다.

4. Maven 종속성

MongoDB 용 Java 드라이버의 종속성을 정의하여 시작해야합니다.

 org.mongodb mongo-java-driver 3.4.1  

새 버전의 라이브러리가 릴리스되었는지 확인하려면 여기에서 릴리스를 추적하십시오.

5. MongoDB 사용

이제 Java로 Mongo 쿼리 구현을 시작하겠습니다. 시작하기에 가장 좋은 기본 CRUD 작업을 따를 것입니다.

5.1. MongoClient 와 연결

먼저 MongoDB 서버에 연결해 보겠습니다. 2.10.0 이상 버전에서는 MongoClient를 사용합니다 .

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

그리고 이전 버전의 경우 Mongo 클래스를 사용하십시오 .

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

5.2. 데이터베이스에 연결

이제 데이터베이스에 연결하겠습니다. 우리가 만들 필요가 없다는 것은 흥미 롭습니다. Mongo가 데이터베이스가 존재하지 않음을 확인하면 데이터베이스를 생성합니다.

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

때로는 기본적으로 MongoDB가 인증 모드로 실행됩니다. 이 경우 데이터베이스에 연결하는 동안 인증해야합니다.

아래와 같이 할 수 있습니다.

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

5.3. 기존 데이터베이스 표시

모든 기존 데이터베이스를 표시하겠습니다. 명령 줄을 사용하려는 경우 데이터베이스를 표시하는 구문은 MySQL과 유사합니다.

show databases;

Java에서는 아래 스 니펫을 사용하여 데이터베이스를 표시합니다.

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

출력은 다음과 같습니다.

local 0.000GB myMongoDb 0.000GB

위의 로컬 은 기본 Mongo 데이터베이스입니다.

5.4. 컬렉션 만들기

데이터베이스에 대한 컬렉션 (MongoDB에 해당하는 테이블) 을 생성하여 시작하겠습니다 . 데이터베이스에 연결되면 컬렉션 을 다음과 같이 만들 수 있습니다 .

database.createCollection("customers", null);

이제 현재 데이터베이스에 대한 기존 컬렉션을 모두 표시해 보겠습니다.

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

출력은 다음과 같습니다.

customers

5.5. 저장 – 삽입

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.

이러한 모든 예제 및 코드 스 니펫의 구현은 GitHub에서 찾을 수 있습니다. 이것은 Maven 기반 프로젝트이므로 그대로 가져 와서 실행할 수 있어야합니다.