-
MongoDB | Java(자바) 연동 및 기본 CRUD 구현하기▼ DataBase, NoSQL/MongoDB 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/
반응형'▼ DataBase, NoSQL > MongoDB' 카테고리의 다른 글
MongoDB | 기본 CRUD 시작하기 (0) 2022.01.27 MongoDB | 윈도우 MongoDB 설치하기 (0) 2022.01.16