Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 뷰(View) 생성하기 – createView() 메서드 완벽 가이드

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()로 간편하게 조회할 수 있다.