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

MongoDB $concatArrays 연산자를 활용한 배열 연결 방법

MongoDB에서 배열 연결하기

MongoDB에서 두 개 이상의 배열을 하나로 합쳐야 할 때는 $concatArrays 연산자를 사용합니다. 이 연산자는 집계 파이프라인(aggregate)의 $project 단계에서 활용되며, 여러 배열 필드를 순서대로 이어 붙인 새로운 배열을 생성해 줍니다.

실제 동작 과정을 예제와 함께 단계별로 살펴보겠습니다.

1단계: 컬렉션 생성 및 문서 삽입

먼저 insertOne() 메서드를 사용하여 문서가 포함된 컬렉션을 생성합니다.

> db.arrayConcatenationDemo.insertOne({"TeacherName":["Chris","Robert"],"StudentName":["Mike","Sam"]});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5ce921c078f00858fb12e911")
}

위 명령은 TeacherName과 StudentName이라는 두 개의 배열 필드를 가진 문서 하나를 arrayConcatenationDemo 컬렉션에 추가합니다.

2단계: 저장된 문서 확인

find() 메서드에 pretty()를 함께 사용하면 컬렉션의 모든 문서를 보기 좋게 출력할 수 있습니다.

> db.arrayConcatenationDemo.find().pretty();

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

{
   "_id" : ObjectId("5ce921c078f00858fb12e911"),
   "TeacherName" : [
      "Chris",
      "Robert"
   ],
   "StudentName" : [
      "Mike",
      "Sam"
   ]
}

3단계: $concatArrays로 배열 연결

이제 aggregate() 메서드 안에서 $project 단계와 $concatArrays 연산자를 조합하여 두 배열을 하나로 합칩니다.

> db.arrayConcatenationDemo.aggregate([
   { "$project": {
      "StudentAndTeacherName": { "$concatArrays": [ "$TeacherName", "$StudentName" ] }
   }}
]);

$concatArrays에 전달된 배열들은 작성한 순서대로 연결됩니다. 즉, 위 예제에서는 TeacherName 배열 뒤에 StudentName 배열이 이어집니다.

실행 결과

쿼리 실행 결과, 두 배열이 합쳐진 새로운 필드 StudentAndTeacherName이 생성된 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5ce921c078f00858fb12e911"), "StudentAndTeacherName" : [ "Chris", "Robert", "Mike", "Sam" ] }

참고 사항

$concatArrays 연산자 사용 시 몇 가지 유의할 점이 있습니다.

- 인수로 전달되는 모든 값은 반드시 배열이어야 하며, 배열이 아닌 값이 포함되면 오류가 발생합니다.
- null 값을 전달하면 결과도 null로 반환됩니다.
- 세 개 이상의 배열도 한 번에 연결할 수 있습니다.

이처럼 $concatArrays 연산자를 활용하면 별도의 복잡한 로직 없이 집계 파이프라인 내에서 손쉽게 배열을 병합할 수 있습니다.