250103 에이콘 아카데미 수업에 기반하여 작성되었음을 알립니다.
NoSQL은 현재 SNS에 있는 구조가 제각기인 데이터들을 크롤링할 때 유리하다.
MongoDB - JAVA (CRUD)
이전 글과 이어서 진행됩니다.
MongoDB shell
MongoTest2 (읽기)
public class MongoTest2 {
// Customer 데이터를 저장하는 클래스
static class Customer {
private ObjectId id;
private String name;
private int age;
private String gender;
public Customer(ObjectId id, String name, int age, String gender) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
}
// 출력을 담당할 toString() 오버라이딩
@Override
public String toString() {
return "id: " + id + ", name:" + name + ", age:" + age + ", gender:" + gender;
}
}
public static void main(String[] args) {
// MongoDB 연동 후 CRUD 연습
String uri = "mongodb://localhost:27017";
try (MongoClient mongoClient = MongoClients.create(uri)) {
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection<Document> collection = db.getCollection("customer");
// 읽기
List<Customer> clist = new ArrayList<MongoTest2.Customer>();
for(Document doc : collection.find()) {
// age 필드가 Integer 또는 String 일 수 있으므로 약간의 처리 필요
Object ageObject = doc.get("age");
int age = 0;
if(ageObject instanceof Integer) {
age = (Integer)ageObject;
} else if (ageObject instanceof String) {
try {
age = Integer.parseInt((String)ageObject);
} catch (NumberFormatException e) {
System.out.println("Invalid Format : " + ageObject);
}
}
Customer customer = new Customer(doc.getObjectId("_id"),
doc.getString("name"), age, doc.getString("gender"));
clist.add(customer);
}
for(Customer cus : clist) {
System.out.println(cus.id + " " + cus.name + " " +
cus.age + " " + cus.gender + " ");
}
System.out.println("건수 : " + collection.countDocuments());
} catch (Exception e) {
System.out.println("Exception : " + e);
}
}
}
MongoTest2 (추가)
public class MongoTest2 {
... 생략
public static void main(String[] args) {
// MongoDB 연동 후 CRUD 연습
String uri = "mongodb://localhost:27017";
try (MongoClient mongoClient = MongoClients.create(uri)) {
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection<Document> collection = db.getCollection("customer");
// 추가
Document newData = new Document("name", "임형근").append("age", 30).append("gender", "남");
collection.insertOne(newData);
... 생략
}
MongoTest2 (수정)
public class MongoTest2 {
... 생략
public static void main(String[] args) {
// MongoDB 연동 후 CRUD 연습
String uri = "mongodb://localhost:27017";
try (MongoClient mongoClient = MongoClients.create(uri)) {
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection<Document> collection = db.getCollection("customer");
...생략
// 수정, 삭제 대상 Document 검색
// eq : import static com.mongodb.client.model.Filters.eq;
Document fCustomer = collection.find(eq("name", "임형근")).first();
if(fCustomer != null) {
ObjectId cusId = fCustomer.getObjectId("_id");
// 수정 : 나이와 성별 수정
collection.updateOne(eq("_id", cusId),
Updates.combine(Updates.set("age", 19), Updates.set("gender", "여"))
);
}
}
MongoTest2 (삭제)
public class MongoTest2 {
... 생략
public static void main(String[] args) {
// MongoDB 연동 후 CRUD 연습
String uri = "mongodb://localhost:27017";
try (MongoClient mongoClient = MongoClients.create(uri)) {
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection<Document> collection = db.getCollection("customer");
... 생략
// 삭제
collection.deleteOne(eq("_id", cusId));
} else {
System.out.println("해당 고객 없음");
}
... 생략
}
MongoDB - JAVA (동적인 칼럼 처리)
MongoTest3
public class MongoTest3 {
public static void main(String[] args) {
String uri = "mongodb://localhost:27017";
try (MongoClient mongoClient = MongoClients.create(uri)) {
MongoDatabase db = mongoClient.getDatabase("test");
MongoCollection<Document> collection = db.getCollection("customer");
// 동적인 칼럼 처리
for(Document document : collection.find()) {
for(Entry<String, Object> entry : document.entrySet()) {
String fieldName = entry.getKey();
Object fieldValue = entry.getValue();
System.out.println(fieldName + " " + fieldValue);
}
System.out.println("--------------------------------");
}
System.out.println("건수 : " + collection.countDocuments());
} catch (Exception e) {
e.printStackTrace();
}
}
}
'Study > Acorn' 카테고리의 다른 글
250107 MongoDB (웹 데이터 저장/읽기) (0) | 2025.01.07 |
---|---|
250106 MongoDB (SpringBoot, 대용량 데이터 저장/읽기) (0) | 2025.01.06 |
250102 MongoDB (개념, 설치, 기본 CRUD, Java 연동) (0) | 2025.01.02 |
241231 도커 (nodejs 웹서버, 우분투 자바 설치, 도커 허브 푸쉬) (0) | 2024.12.31 |
241230 도커 (설치, 기본명령어) (0) | 2024.12.30 |