▼ DataBase, NoSQL/MongoDB
MongoDB | Java(자바) 연동 및 기본 CRUD 구현하기
Valar
2022. 1. 28. 20:46
반응형
이전 글) MongoDB | Windows 10, MongoDB 설치하기
MongoDB | RDBMS |
Database | Database |
Collection | Table |
Document | Tuple/Row |
Field | Column |
Primary Key ( Default _id ) | Primary Key |
📌 Dependency (mongodb-driver) 추가
Maven
<dependencies>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.4.1</version>
</dependency>
</dependencies>
Gradle
implementation 'org.mongodb:mongodb-driver-sync:4.4.1'
📌 MongoDB 접속 및 데이터베이스 접근하기
접속 URI를 통해 MongoClient를 생성하고 데이터베이스를 가져온다.
import com.mongodb.client.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MongoConfig {
private static final String URI = "mongodb://localhost:27017";
private static final String DATABASE = "sample";
@Bean
public MongoDatabase mongoDatabase() {
MongoClient mongoClient = MongoClients.create(URI);
MongoDatabase database = mongoClient.getDatabase(DATABASE);
return database;
}
}
📌 생성자 주입 및 기본 CRUD 메서드 구현
private static final String COLLECTION = "person";
private final MongoDatabase mongoDatabase;
public MongoRestController(MongoDatabase mongoDatabase) {
this.mongoDatabase = mongoDatabase;
}
INSERT - 등록
mongoDatabase에서 등록 할 collection를 가져온 뒤 documemt를 등록한다.
@GetMapping("/insert")
public void insertOne() {
MongoCollection<Document> collection = mongoDatabase.getCollection(COLLECTION);
Document document = new Document();
document.append("name", "Tom");
document.append("age", "25");
InsertOneResult result = collection.insertOne(document);
System.out.println("==> InsertOneResult : " + result.getInsertedId());
}
@GetMapping("/insert-many")
public void insertMany() {
MongoCollection<Document> collection = mongoDatabase.getCollection(COLLECTION);
List<Document> insertList = new ArrayList<>();
Document document1 = new Document();
Document document2 = new Document();
document1.append("name", "Marin");
document1.append("age", "56");
document2.append("name", "Jenny");
document2.append("age", "35");
insertList.add(document1);
insertList.add(document2);
InsertManyResult result = collection.insertMany(insertList);
System.out.println("==> InsertManyResult : " + result.getInsertedIds());
}
FIND - 조회
finyById 메서드에서는 Unique index인 id를 이용해서 eq, ( _id == 값) 단건 조회한다.
@GetMapping("/find")
public void find() {
MongoCollection<Document> collection = mongoDatabase.getCollection(COLLECTION);
FindIterable<Document> doc = collection.find();
Iterator itr = doc.iterator();
while (itr.hasNext()) {
System.out.println("==> findResultRow : "+itr.next());
}
}
@GetMapping("/find-id")
public void findById(@RequestParam String id) {
MongoCollection<Document> collection = mongoDatabase.getCollection(COLLECTION);
Document doc = collection.find(eq("_id", new ObjectId(id))).first();
System.out.println("==> findByIdResult : " + doc);
}
UPDATE - 수정
updateOne 메서드에서는 eq, (_id == 값) 조건에 해당되는 document를 수정한다.
updateMany 메서드에서는 gt, (age > 값) 조건에 해당되는 document를 모두 수정한다.
@GetMapping("/update")
public void updateOne(@RequestParam String id) {
MongoCollection<Document> collection = mongoDatabase.getCollection(COLLECTION);
Bson query = eq("_id", new ObjectId(id));
Bson updates = Updates.combine(
Updates.set("name", "modify name"),
Updates.currentTimestamp("lastUpdated"));
UpdateResult result = collection.updateOne(query, updates);
System.out.println("==> UpdateResult : " + result.getModifiedCount());
}
@GetMapping("/update-many")
public void updateMany(@RequestParam String age) {
MongoCollection<Document> collection = mongoDatabase.getCollection(COLLECTION);
Bson query = gt("age", age);
Bson updates = Updates.combine(
Updates.set("name", "modify name"),
Updates.currentTimestamp("lastUpdated"));
UpdateResult result = collection.updateMany(query, updates);
System.out.println("==> UpdateManyResult : " + result.getModifiedCount());
}
DELETE - 삭제
deleteOne 메서드에서는 eq, (_id == 값) 조건에 해당되는 document를 삭제한다.
deleteMany 메서드에서는 gt, (age > 값) 조건에 해당되는 document를 모두 삭제한다.
@GetMapping("/delete")
public void deleteOne(@RequestParam String id) {
MongoCollection<Document> collection = mongoDatabase.getCollection(COLLECTION);
Bson query = eq("_id", new ObjectId(id));
DeleteResult result = collection.deleteOne(query);
System.out.println("==> DeleteResult : " + result.getDeletedCount());
}
@GetMapping("/delete-many")
public void deleteMany(@RequestParam String age) {
MongoCollection<Document> collection = mongoDatabase.getCollection(COLLECTION);
Bson query = gt("age", age);
DeleteResult result = collection.deleteMany(query);
System.out.println("==> DeleteManyResult : " + result.getDeletedCount());
}
📌비교 연산자
이름 | 설명 |
지정된 값과 같은 값을 찾습니다.
|
|
지정된 값보다 큰 값을 찾습니다.
|
|
지정된 값보다 크거나 같은 값과 일치합니다.
|
|
배열에 지정된 값 중 하나와 일치합니다.
|
|
지정된 값보다 작은 값과 일치합니다.
|
|
지정된 값보다 작거나 같은 값을 찾습니다.
|
|
지정된 값과 같지 않은 모든 값과 일치합니다.
|
|
배열에 지정된 값과 일치하지 않습니다.
|
GitHub
https://github.com/conf312/mongodb-java.git
Reference
https://docs.mongodb.com/drivers/java/sync/current/quick-start/
반응형