1. 개요
MongoDB 는 가장 널리 사용되는 오픈 소스 및 분산 문서 지향 NoSQL 데이터베이스입니다. MongoDB의 문서는 필드와 값 쌍이 있는 JSON과 같은 객체가 있는 데이터 구조입니다.
문서를 MongoDB 컬렉션에 삽입하기 위해 insert() , insertOne() 및 insertMany( ) 와 같은 다양한 메서드를 사용할 수 있습니다 .
이 사용방법(예제)에서는 MongoDB 문서 내에 배열을 삽입하는 방법에 대해 설명합니다. 먼저 MongoDB Shell 쿼리를 사용하여 문서에 배열을 삽입하는 방법을 살펴보겠습니다. 그런 다음 MongoDB Java 드라이버 코드를 사용합니다.
2. 데이터베이스 초기화
삽입 쿼리로 이동하기 전에 먼저 데이터베이스를 생성해 보겠습니다. 밸둥이 라고 부르자. 또한 학생 이라는 샘플 컬렉션을 만듭니다 .
use baeldung;
db.createCollection(student);
이 명령으로 샘플 baeldung 데이터베이스와 학생 컬렉션이 성공적으로 설정되었습니다. 우리는 이것을 모든 예제에서 설명하기 위해 사용할 것입니다.
3. 몽고DB 셸 사용
MongoDB 셸을 사용하여 컬렉션에 배열을 삽입하려면 배열을 JSON 배열 유형 으로 셸에 전달하기만 하면 됩니다.
db.student.insert({
"studentId" : "STU1",
"name" : "Avin",
"Age" : 12,
"courses" : ["Science", "Math"]
});
위의 쿼리는 학생 컬렉션 에 배열이 있는 단일 문서를 삽입합니다 . find 연산자 를 사용하여 학생 컬렉션 의 문서를 쿼리하여 결과를 확인할 수 있습니다 .
db.student.find();
위 쿼리는 삽입된 학생 컬렉션 문서를 반환합니다.
{
"_id" : ObjectId("631da4197581ba6bc1d2524d"),
"studentId" : "STU1",
"name" : "Avin",
"Age" : 12,
"courses" : [ "Science", "Math" ]
}
4. Java 드라이버 코드를 사용하여 작업 삽입
MongoDB Java 드라이버는 컬렉션에 문서를 삽입하는 데 도움이 되는 다양한 편의 메서드를 제공합니다.
- insert() – 컬렉션에 단일 문서 또는 여러 문서를 삽입합니다.
- insertOne() – 단일 문서를 컬렉션에 삽입합니다.
- insertMany() – 컬렉션에 여러 문서를 삽입합니다.
위의 방법 중 하나를 사용 하여 MongoDB 컬렉션에서 삽입 작업을 수행할 수 있습니다.
다음으로 Java MongoDB 드라이버를 사용하여 배열 삽입 작업을 구현하는 방법을 살펴보겠습니다. MongoDB Java 드라이버는 DBObject 및 BSON 문서를 모두 지원합니다.
5. DBObject 사용
여기에서 DBObject 는 MongoDB 레거시 드라이버의 일부이지만 최신 버전의 MongoDB에서는 더 이상 사용되지 않습니다.
배열이 있는 DBObject 문서를 학생 컬렉션 에 삽입해 보겠습니다 .
BasicDBList coursesList = new BasicDBList();
coursesList.add("Chemistry");
coursesList.add("Science");
DBObject student = new BasicDBObject().append("studentId", "STU1")
.append("name", "Jim")
.append("age", 13)
.append("courses", coursesList);
dbCollection.insert(student);
위의 쿼리 는 배열이 있는 단일 DBObject 문서를 학생 컬렉션에 삽입합니다.
6. BSON 문서 사용
BSON 문서는 Java에서 MongoDB 문서에 액세스하는 새로운 방법이며 최신 클라이언트 스택으로 빌드됩니다 . 다행히 사용하기도 더 쉽습니다.
Java 드라이버는 배열 이 있는 Bson 문서 개체를 학생 컬렉션 에 삽입하는 org.bson.Document 클래스를 제공합니다.
6.1. 배열이 있는 단일 문서 삽입
먼저 insertOne() 메서드 를 사용하여 배열이 있는 단일 문서를 컬렉션에 삽입해 보겠습니다 .
List coursesList = new ArrayList<>();
coursesList.add("Science");
coursesList.add("Geography");
Document student = new Document().append("studentId", "STU2")
.append("name", "Sam")
.append("age", 13)
.append("courses", coursesList);
collection.insertOne(student);
위의 쿼리는 배열이 있는 단일 문서를 학생 컬렉션에 삽입합니다. Document 클래스 의 append(String, Object) 메서드 는 Object 를 값으로 받아들인다는 점에 유의해야 합니다 . 모든 객체 유형의 List 을 값으로 전달 하여 문서에 배열로 삽입할 수 있습니다.
6.2. 배열로 여러 문서 삽입
insertMany() 메서드 를 사용하여 배열이 있는 여러 문서를 컬렉션에 삽입해 보겠습니다 .
List coursesList1 = new ArrayList<>();
coursesList1.add("Chemistry");
coursesList1.add("Geography");
Document student1 = new Document().append("studentId", "STU3")
.append("name", "Sarah")
.append("age", 12)
.append("courses", coursesList1);
List coursesList2 = new ArrayList<>();
coursesList2.add("Math");
coursesList2.add("History");
Document student2 = new Document().append("studentId", "STU4")
.append("name", "Tom")
.append("age", 13)
.append("courses", coursesList2);
List<Document> students = new ArrayList<>();
students.add(student1);
students.add(student2);
collection.insertMany(students);
위의 쿼리는 배열이 있는 여러 문서를 학생 컬렉션에 삽입합니다.
6.3. 개체 배열 삽입
마지막으로 Object 배열 유형의 문서를 MongoDB 컬렉션에 삽입해 보겠습니다.
Document course1 = new Document().append("name", "C1")
.append("points", 5);
Document course2 = new Document().append("name", "C2")
.append("points", 7);
List<Document> coursesList = new ArrayList<>();
coursesList.add(course1);
coursesList.add(course2);
Document student = new Document().append("studentId", "STU5")
.append("name", "Sam")
.append("age", 13)
.append("courses", coursesList);
collection.insertOne(student);
위의 쿼리는 개체 배열이 있는 여러 문서를 학생 컬렉션에 삽입합니다. 여기에서는 컬렉션에 문서 List을 배열로 포함하는 문서를 삽입했습니다. 마찬가지로 복잡한 배열 객체 를 생성 하여 MongoDB 컬렉션에 삽입할 수 있습니다.
7. 결론
이 기사에서는 배열 Object 가 있는 문서를 MongoDB 컬렉션 에 삽입하는 다양한 방법을 살펴보았습니다 . MongoDB Shell 쿼리와 해당 Java 드라이버 코드 구현을 모두 사용하여 이러한 사용 사례에 대해 논의했습니다.
Java 드라이브 코드를 사용하여 먼저 더 이상 사용되지 않는 DBObject 클래스를 사용한 구현을 살펴보았습니다. 그런 다음 새로운 BSON 문서 클래스 를 사용하여 동일한 것을 구현하는 방법을 배웠습니다 .
이러한 모든 예제 및 코드 스니펫의 구현은 GitHub에서 사용할 수 있습니다 .