MongoDB에서 두 개 이상의 배열을 하나로 합쳐야 할 때는 집계 파이프라인의 $concatArrays 연산자를 사용하면 됩니다. 이 연산자는 여러 배열 필드를 순서대로 이어 붙여 새로운 배열을 만들어 주며, MongoDB 3.2 버전부터 지원됩니다.
1. 샘플 데이터 준비하기
먼저 학생 목록과 교사 목록을 담고 있는 문서로 컬렉션을 생성해 보겠습니다.
> db.demo14.insertOne({"ListOfStudent":["Carol","Mike","Sam"],"ListOfTeacher":["Robert","David"]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e0f754bd7df943a7cec4faa")
}2. 저장된 문서 확인하기
find() 메서드를 사용해 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.
> db.demo14.find().pretty();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{
"_id" : ObjectId("5e0f754bd7df943a7cec4faa"),
"ListOfStudent" : [
"Carol",
"Mike",
"Sam"
],
"ListOfTeacher" : [
"Robert",
"David"
]
}3. $concatArrays로 배열 연결하기
이제 aggregate() 메서드와 함께 $project 단계를 사용하여 ListOfStudent와 ListOfTeacher 두 배열을 하나의 ListOfPeople 필드로 합쳐 보겠습니다.
> db.demo14.aggregate([
... { "$project": {
... "ListOfPeople": { "$concatArrays": [ "$ListOfStudent", "$ListOfTeacher" ] }
... }}
... ]);실행 결과는 다음과 같습니다. 두 배열의 요소들이 앞선 순서대로 하나의 배열에 잘 병합된 것을 확인할 수 있습니다.
{ "_id" : ObjectId("5e0f754bd7df943a7cec4faa"), "ListOfPeople" : [ "Carol", "Mike", "Sam", "Robert", "David" ] }참고 사항
$concatArrays는 인자로 전달된 배열들을 순서대로 연결하며, 원본 문서는 변경하지 않습니다. 또한 세 개 이상의 배열도 동시에 연결할 수 있어, 여러 개의 리스트 필드를 통합해야 하는 상황에서 매우 유용하게 활용됩니다.