MongoDB에서 두 개의 배열을 하나로 합치거나 기존 배열에 새 배열을 추가하려면 $concatArrays 연산자를 사용하면 됩니다. 이 연산자는 애그리게이션 파이프라인 안에서 여러 배열을 하나의 배열로 결합할 때 매우 유용합니다.
1. 샘플 컬렉션 생성하기
먼저 demo435라는 컬렉션을 만들고 이름 데이터를 담은 문서들을 삽입해 보겠습니다.
> db.demo435.insertOne({"FirstName":["Chris"],"LastName":["Brown"]} );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e7719b1bbc41e36cc3cae97")
}
> db.demo435.insertOne({"FirstName":["David"],"LastName":["Miller"]} );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e7719bdbbc41e36cc3cae98")
}
> db.demo435.insertOne({"FirstName":["John"],"LastName":["Doe"]} );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e7719c6bbc41e36cc3cae99")
}2. find() 메서드로 전체 문서 조회하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo435.find().pretty();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{
"_id" : ObjectId("5e7719b1bbc41e36cc3cae97"),
"FirstName" : [
"Chris"
],
"LastName" : [
"Brown"
]
}
{
"_id" : ObjectId("5e7719bdbbc41e36cc3cae98"),
"FirstName" : [
"David"
],
"LastName" : [
"Miller"
]
}
{
"_id" : ObjectId("5e7719c6bbc41e36cc3cae99"),
"FirstName" : [
"John"
],
"LastName" : [
"Doe"
]
}3. $concatArrays로 배열 연결하기
다음은 $concatArrays를 사용해 FirstName 배열과 LastName 배열을 FullName이라는 하나의 배열로 합치는 쿼리입니다.
> db.demo435.aggregate([ { $project: { FullName: { $concatArrays: [ "$FirstName", "$LastName" ] } } } ])쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e7719b1bbc41e36cc3cae97"), "FullName" : [ "Chris", "Brown" ] }
{ "_id" : ObjectId("5e7719bdbbc41e36cc3cae98"), "FullName" : [ "David", "Miller" ] }
{ "_id" : ObjectId("5e7719c6bbc41e36cc3cae99"), "FullName" : [ "John", "Doe" ] }마무리
$concatArrays는 각 문서에 흩어져 있는 여러 배열 필드를 손쉽게 하나로 병합할 수 있는 강력한 도구입니다. 성과 이름처럼 분리된 데이터를 하나의 필드로 묶어야 할 때 특히 유용하며, $project 단계와 함께 사용하면 원하는 형태로 출력 필드를 자유롭게 구성할 수 있습니다.