MongoDB 쿼리에서 별칭(Alias) 생성하기
MongoDB에서는 SQL처럼 AS 키워드를 사용하는 대신, 애그리게이션 프레임워크(aggregate framework)의 $project 단계를 활용하여 필드에 별칭을 지정할 수 있습니다. 이 방법을 사용하면 원본 데이터는 그대로 유지하면서 쿼리 결과에서만 필드 이름을 새롭게 바꿔 출력할 수 있습니다.
먼저 예제로 사용할 컬렉션을 생성하고 문서를 삽입해 보겠습니다.
> db.creatingAliasDemo.insertOne({_id:101,"Name":"John Doe"});
{ "acknowledged" : true, "insertedId" : 101 }
> db.creatingAliasDemo.insertOne({_id:102,"Name":"David Miller"});
{ "acknowledged" : true, "insertedId" : 102 }
> db.creatingAliasDemo.insertOne({_id:103,"Name":"Sam Williams"});
{ "acknowledged" : true, "insertedId" : 103 }컬렉션의 모든 문서 조회하기
다음은 find() 메서드를 사용하여 컬렉션에 저장된 모든 문서를 조회하는 쿼리입니다.
> db.creatingAliasDemo.find().pretty();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : 101, "Name" : "John Doe" }
{ "_id" : 102, "Name" : "David Miller" }
{ "_id" : 103, "Name" : "Sam Williams" }$project를 사용하여 별칭 생성하기
다음은 aggregate() 메서드와 $project 연산자를 조합하여 쿼리 결과에 별칭을 생성하는 방법입니다. 여기서는 "Name" 필드를 "FullName"이라는 새로운 이름으로 매핑하여 출력합니다.
> db.creatingAliasDemo.aggregate(
... [
... {
... $project: {
... _id:1,
... "FullName":"$Name"
... }
... }
... ]
... );
실행 결과를 확인해 보면, 원래의 "Name" 필드가 "FullName"이라는 별칭으로 변경되어 출력되는 것을 알 수 있습니다.
{ "_id" : 101, "FullName" : "John Doe" }
{ "_id" : 102, "FullName" : "David Miller" }
{ "_id" : 103, "FullName" : "Sam Williams" }핵심 정리
- aggregate() 메서드와 $project 단계를 함께 사용하면 SQL의 AS 절과 동일한 별칭 기능을 구현할 수 있습니다.
"새필드명": "$기존필드명"형식으로 작성하면 기존 필드의 값이 새로운 이름으로 매핑됩니다._id:1은 결과에 _id 필드를 포함하겠다는 의미이며, 필요 없다면_id:0으로 설정하여 제외할 수 있습니다.- 별칭은 쿼리 결과에만 적용되며, 원본 컬렉션의 실제 데이터는 전혀 변경되지 않습니다.