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

MongoDB에서 $addToSet 연산자로 데이터 반환 형식 지정하는 방법

MongoDB에서 반환 형식 지정하기

MongoDB에서는 $addToSet 연산자를 활용하면 여러 문서에 흩어져 있는 값을 하나의 배열로 묶어 원하는 반환 형식으로 결과를 얻을 수 있습니다. 이번 글에서는 실제 예제를 통해 그 사용법을 단계별로 살펴보겠습니다.

1. 컬렉션 생성 및 문서 삽입

먼저 예제로 사용할 컬렉션을 만들고 문서를 삽입합니다.

> db.demo207.insertOne({"FavouriteTechnology":"Spring Boot"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3d8e7a03d395bdc21346f1")
}
> db.demo207.insertOne({"FavouriteTechnology":"MongoDB"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3d8e8f03d395bdc21346f2")
}
> db.demo207.insertOne({"FavouriteTechnology":"Groovy"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3d8ea603d395bdc21346f3")
}

2. find() 메서드로 전체 문서 조회

find() 메서드를 사용하면 컬렉션의 모든 문서를 확인할 수 있습니다.

> db.demo207.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e3d8e7a03d395bdc21346f1"), "FavouriteTechnology" : "Spring Boot" }
{ "_id" : ObjectId("5e3d8e8f03d395bdc21346f2"), "FavouriteTechnology" : "MongoDB" }
{ "_id" : ObjectId("5e3d8ea603d395bdc21346f3"), "FavouriteTechnology" : "Groovy" }

3. $addToSet으로 반환 형식 지정하기

이제 애그리게이션 파이프라인에서 $group$addToSet, $project를 조합하여 각 기술 이름이 배열 형태로 담긴 결과를 반환하도록 쿼리를 작성해 보겠습니다.

> db.demo207.aggregate([
...    {
...       "$group": {
...          "_id": 0,
...          "FavouriteTechnology": {
...             "$addToSet": "$FavouriteTechnology"
...          }
...       }
...    },
...    {
...       "$project": {
...          "_id": 0,
...          "FavouriteTechnology": 1
...       }
...    }
...]);

실행 결과는 다음과 같습니다.

{ "FavouriteTechnology" : [ "MongoDB", "Groovy", "Spring Boot" ] }

쿼리 동작 방식 설명

  • $group: _id를 0으로 지정해 모든 문서를 하나의 그룹으로 묶습니다.
  • $addToSet: 그룹 내 FavouriteTechnology 필드 값들을 중복 없이 배열로 수집합니다.
  • $project: _id 필드를 제외하고 FavouriteTechnology 필드만 결과에 포함시킵니다.

이처럼 $addToSet을 활용하면 개별 문서에 저장된 값들을 손쉽게 하나의 배열로 변환할 수 있어, API 응답 형식을 정제하거나 데이터 요약 작업에 매우 유용합니다.