MongoDB에서 뷰(View)를 생성하려면 createView() 메서드를 사용합니다. 뷰는 실제 데이터를 저장하지 않고 기존 컬렉션을 기반으로 집계 파이프라인의 결과를 보여주는 가상 컬렉션입니다. 이 글에서는 예제를 통해 뷰를 생성하고 조회하는 전체 과정을 단계별로 살펴보겠습니다.
1. 샘플 컬렉션 생성 및 문서 삽입
먼저 문서를 포함하는 컬렉션을 생성합니다. 아래 예제에서는 demo113이라는 컬렉션에 학생 정보를 담은 문서 하나를 삽입합니다.
> db.demo113.insertOne(
... { _id: 1, StudentId: "101", "Details": { Name: "Chris", Age: 21 }, Subject: "MySQL" }
... );
{ "acknowledged" : true, "insertedId" : 1 }
insertOne()이 성공적으로 실행되면 acknowledged: true와 함께 삽입된 문서의 _id 값이 반환됩니다.
2. find()로 컬렉션의 모든 문서 조회
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다. 가독성을 높이기 위해 pretty()를 함께 사용했습니다.
> db.demo113.find().pretty();
위 쿼리는 다음과 같은 결과를 출력합니다.
{
"_id" : 1,
"StudentId" : "101",
"Details" : {
"Name" : "Chris",
"Age" : 21
},
"Subject" : "MySQL"
}
3. createView()로 뷰 생성하기
이제 createView() 메서드를 사용해 뷰를 생성해 보겠습니다. 이 메서드는 세 가지 인자를 받습니다.
- 뷰 이름: 생성할 뷰의 이름 (예:
firstView) - 소스 컬렉션: 뷰의 기반이 되는 원본 컬렉션 (예:
demo113) - 집계 파이프라인: 뷰에 표시할 데이터를 정의하는 배열
아래 쿼리에서는 $project 연산자를 사용하여 Details.Name 필드를 Name으로 추출하고, Subject 필드를 함께 포함시켰습니다.
> db.createView(
... "firstView",
... "demo113",
... [ { $project: { "Name": "$Details.Name", Subject: 1 } } ]
... )
{ "ok" : 1 }
ok: 1이 반환되면 뷰가 정상적으로 생성된 것입니다.
4. 생성된 뷰 조회하기
뷰도 일반 컬렉션처럼 find() 메서드로 조회할 수 있습니다.
> db.firstView.find();
실행 결과는 다음과 같습니다.
{ "_id" : 1, "Subject" : "MySQL", "Name" : "Chris" }
정리
MongoDB의 뷰는 원본 컬렉션의 데이터를 특정 형태로 변환하여 보여주는 강력한 도구입니다. 민감한 필드를 숨기거나, 자주 사용하는 집계 결과를 재사용할 때 유용합니다. 핵심 내용을 요약하면 다음과 같습니다.
db.createView(뷰이름, 소스컬렉션, 파이프라인)형식으로 뷰를 생성한다.- 뷰는 물리적으로 데이터를 저장하지 않으며, 조회 시점마다 파이프라인이 실행된다.
- 일반 컬렉션과 동일하게
find()로 간편하게 조회할 수 있다.